Debian SFTP配置實現遠程管理的完整步驟
Debian系統默認未安裝OpenSSH服務器,需先通過以下命令安裝:
sudo apt update
sudo apt install openssh-server
安裝完成后,SSH服務會自動啟動,可通過systemctl status ssh確認服務狀態。
為隔離SFTP用戶權限,建議創建專用用戶組(如sftp_users),并將用戶添加至該組:
# 創建用戶組
sudo groupadd sftp_users
# 創建用戶(以"sftpuser"為例),設置密碼并指定家目錄
sudo useradd -m -G sftp_users -s /sbin/nologin sftpuser # -s /sbin/nologin禁止SSH登錄
sudo passwd sftpuser # 設置用戶密碼
注:
-s /sbin/nologin確保用戶無法通過SSH shell登錄,僅能使用SFTP。
編輯SSH主配置文件/etc/ssh/sshd_config,通過Match指令限定sftp_users組的權限:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak # 備份原配置
sudo nano /etc/ssh/sshd_config
在文件末尾添加以下內容(關鍵配置說明見下方):
# 啟用SFTP子系統(默認路徑,無需修改)
Subsystem sftp internal-sftp
# 限制sftp_users組的權限
Match Group sftp_users
ChrootDirectory %h # 將用戶限制在其家目錄(chroot jail)
ForceCommand internal-sftp # 強制使用SFTP,禁止SSH shell
AllowTcpForwarding no # 禁用TCP轉發
X11Forwarding no # 禁用X11轉發
關鍵配置說明:
ChrootDirectory %h:將用戶根目錄鎖定為其家目錄(如/home/sftpuser),防止訪問系統其他路徑;ForceCommand internal-sftp:強制用戶只能使用SFTP命令,無法執行SSH shell;AllowTcpForwarding no/X11Forwarding no:禁用不必要的轉發功能,提升安全性。
chroot環境要求用戶家目錄的所有者為root且不可寫,用戶需在自家目錄下創建可寫子目錄(如upload):
# 設置家目錄權限(root所有,755權限)
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
# 創建用戶可寫的子目錄(如upload)
sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftp_users /home/sftpuser/upload # 所屬用戶及組
sudo chmod 755 /home/sftpuser/upload # 權限設置(用戶可讀寫,組可讀)
注:若需用戶直接在家目錄下寫入,可將
ChrootDirectory設置為/home/%u/upload(需調整目錄結構),但需確保父目錄權限正確。
修改配置后,需重啟SSH服務使更改生效:
sudo systemctl restart ssh
可通過systemctl status ssh確認服務是否正常啟動。
使用SFTP客戶端(如命令行工具或圖形化工具)連接服務器,驗證配置是否正確:
# 命令行測試(本地測試)
sftp sftpuser@localhost
連接成功后,可執行以下命令驗證功能:
ls # 列出遠程目錄文件
put local_file.txt # 上傳本地文件至服務器
get remote_file.txt # 下載服務器文件至本地
exit # 退出SFTP會話
若連接失敗,可通過tail -f /var/log/auth.log查看SSH日志排查問題。
為進一步提升SFTP服務的安全性,建議采取以下措施:
~/.ssh/authorized_keys),禁用密碼登錄(PasswordAuthentication no);ufw)限制僅允許特定IP訪問SSH端口(默認22);sshd_config中設置PermitRootLogin no,防止root用戶通過SFTP登錄。