1. 備份原始配置文件
在修改SFTP配置前,務必備份/etc/ssh/sshd_config文件,防止配置錯誤導致SSH服務不可用。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
2. 編輯SSH配置文件
使用文本編輯器(如nano)打開/etc/ssh/sshd_config文件:
sudo nano /etc/ssh/sshd_config
3. 修改SFTP配置項
根據需求調整以下關鍵配置(若文件中已有對應行,直接修改;若無則添加):
Subsystem行未被注釋,指定SFTP服務路徑(默認使用內置服務,無需修改路徑):Subsystem sftp internal-sftp
Match塊指定允許使用SFTP的用戶組(如sftpusers),并設置約束條件:Match Group sftpusers
ChrootDirectory %h # 限制用戶根目錄為其家目錄(%h為用戶家目錄占位符)
ForceCommand internal-sftp # 強制使用SFTP,禁用SSH shell訪問
AllowTcpForwarding no # 禁用TCP轉發
X11Forwarding no # 禁用X11轉發
Match Group改為Match User,并指定用戶名:Match User username
ChrootDirectory /home/username
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
4. 保存并退出編輯器
若使用nano,按Ctrl+O保存文件,再按Ctrl+X退出編輯器。
5. 重啟SSH服務
配置修改后,需重啟SSH服務使更改生效:
sudo systemctl restart sshd
6. 驗證配置有效性
sftp username@your_server_ip
登錄后,輸入ls查看當前目錄文件列表,使用put(上傳)或get(下載)測試文件傳輸功能。sudo systemctl status sshd
若狀態顯示為active (running),則表示服務正常運行。注意事項
ChrootDirectory限制用戶根目錄,需確保該目錄的所有者為root且權限為755(如/home/username),否則用戶無法登錄:sudo chown root:root /home/username
sudo chmod 755 /home/username
sudo groupadd sftpusers # 創建sftpusers組
sudo usermod -aG sftpusers username # 將用戶添加到sftpusers組
sudo passwd username # 設置用戶密碼
/var/log/auth.log查看SSH日志,定位具體錯誤原因(如權限不足、配置語法錯誤等)。