SFTP配置在Debian上的详细步骤
Debian系统默认包含OpenSSH服务器,若未安装,可通过以下命令快速安装:
sudo apt update
sudo apt install openssh-server
编辑SSH配置文件/etc/ssh/sshd_config,修改或添加以下内容以启用SFTP功能:
sudo nano /etc/ssh/sshd_config
# Subsystem sftp /usr/lib/openssh/sftp-server行,取消注释并将路径改为internal-sftp(更轻量且无需额外安装):Subsystem sftp internal-sftp
sftpusers组的用户限制在自家目录(ChrootDirectory),并禁用TCP转发、X11转发等非必要功能:Match Group sftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
注:
%h代表用户的主目录,ForceCommand internal-sftp强制用户只能使用SFTP,无法切换至Shell。
为提升管理便利性,建议创建专门的SFTP用户组,并将用户添加至该组:
# 创建sftpusers组
sudo groupadd sftpusers
# 新建用户(如"ftpuser")并设置密码
sudo adduser ftpuser
# 将用户加入sftpusers组(-aG表示追加至组,避免移出原有组)
sudo usermod -aG sftpusers ftpuser
SFTP要求用户主目录的权限必须正确,否则会导致连接失败:
# 将主目录所有者设为用户自身(如"ftpuser")
sudo chown ftpuser:ftpuser /home/ftpuser
# 设置主目录权限为755(所有者可读/写/执行,其他用户仅可读/执行)
sudo chmod 755 /home/ftpuser
注意:若需让用户上传文件到主目录,需在主目录下创建子目录(如
upload),并赋予用户写入权限:sudo mkdir /home/ftpuser/upload sudo chown ftpuser:ftpuser /home/ftpuser/upload
修改配置文件后,必须重启SSH服务才能应用更改:
sudo systemctl restart sshd
使用SFTP客户端(如Linux终端或FileZilla)测试连接,确保配置正确:
sftp ftpuser@your_server_ip
连接成功后,输入密码即可进入SFTP命令行界面。输入ls查看主目录文件列表,put local_file上传文件,get remote_file下载文件,验证传输功能是否正常。
sudo systemctl status sshd),或查看认证日志(/var/log/auth.log)获取具体错误信息。upload)所有者为用户且有写入权限。