怎样配置Debian的SFTP
Debian系统默认包含OpenSSH服务器,若未安装,可通过以下命令快速安装:
sudo apt update && sudo apt install openssh-server -y
安装完成后,SSH服务会自动启动(端口默认为22)。
SFTP的核心配置在/etc/ssh/sshd_config文件中,需修改以下关键参数:
启用内置SFTP子系统:注释原有的Subsystem sftp /usr/lib/openssh/sftp-server行,替换为:
Subsystem sftp internal-sftp
此配置使用OpenSSH内置的SFTP服务,无需额外安装sftp-server包,提升稳定性。
限制用户仅能使用SFTP(可选但推荐):在文件末尾添加以下内容,创建sftpusers组并将用户限制在该组内:
Match Group sftpusers
    ChrootDirectory %h       # 将用户根目录锁定为其主目录(如/home/username)
    ForceCommand internal-sftp # 强制使用SFTP,禁用SSH shell访问
    AllowTcpForwarding no    # 禁止TCP转发(增强安全性)
    X11Forwarding no         # 禁止X11图形界面转发
注意:ChrootDirectory的路径需用%h(用户主目录)或具体路径(如/var/sftp/%u),且该目录必须由root用户拥有,权限设为755。
sudo groupadd sftpusers
sftpuser为例,执行以下命令:sudo adduser sftpuser          # 创建用户并设置密码
sudo usermod -aG sftpusers sftpuser  # 将用户添加到sftpusers组
若需创建用户时不设置密码(后续通过密钥登录),可使用adduser --disabled-password选项。ChrootDirectory要求用户主目录的所有者为root,权限为755(防止用户修改目录结构):sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
upload),该目录的所有者为用户自身:sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpusers /home/sftpuser/upload
sudo chmod 755 /home/sftpuser/upload  # 或775(允许组内用户写入)
注意:ChrootDirectory下的目录权限必须严格符合要求,否则会导致SFTP连接失败。修改配置文件后,需重启SSH服务以应用更改:
sudo systemctl restart sshd
若需验证服务状态,可执行sudo systemctl status sshd,确认服务处于active (running)状态。
使用SFTP客户端(如Linux终端或WinSCP)连接服务器,验证配置是否成功:
sftp sftpuser@your_server_ip
输入密码后,若成功登录并显示用户主目录(如/home/sftpuser),且能正常执行ls、put、get等命令,则说明配置生效。
sudo systemctl status sshd),或查看日志文件/var/log/auth.log获取具体错误信息。ChrootDirectory的路径是否符合要求(root所有+755权限)。sftpusers组(groups sftpuser),或密码是否正确(sudo passwd sftpuser修改密码)。