1. 安装OpenSSH服务器
Debian系统默认包含OpenSSH服务器,若未安装,可通过以下命令完成安装:
sudo apt update && sudo apt install openssh-server -y
2. 调整SSH服务器配置(核心步骤)
打开SSH配置文件/etc/ssh/sshd_config,按需修改以下关键参数:
# Subsystem sftp /usr/lib/openssh/sftp-server行,取消注释并将路径改为internal-sftp(更轻量且无需额外安装):Subsystem sftp internal-sftp
Match块,针对特定用户组(如sftpusers)配置SFTP限制。以下配置将强制用户使用SFTP、锁定根目录到主目录,并禁用端口转发等非必要功能:Match Group sftpusers
ChrootDirectory %h # 将用户根目录限制为其主目录
ForceCommand internal-sftp # 强制使用SFTP,禁止SSH shell访问
AllowTcpForwarding no # 禁用TCP转发
X11Forwarding no # 禁用X11转发
PermitRootLogin no # 禁止root用户直接登录
PasswordAuthentication yes # 允许密码认证(可根据需求改为公钥认证)
3. 创建SFTP专用用户组(可选但推荐)
为便于管理,建议创建专门的用户组(如sftpusers),将需要使用SFTP的用户加入该组:
sudo groupadd sftpusers # 创建sftpusers组
sudo usermod -aG sftpusers username # 将用户添加到sftpusers组(替换username为实际用户名)
4. 新增SFTP用户并设置主目录权限
adduser命令创建用户,按提示设置密码(建议使用强密码):sudo adduser username # 创建用户
sudo passwd username # 设置密码
ChrootDirectory(主目录)必须归root所有且权限为755,否则用户无法登录:sudo chown root:root /home/username # 主目录所有者设为root
sudo chmod 755 /home/username # 主目录权限设为755
5. 创建上传目录并设置用户权限
默认情况下,用户无法向其主目录写入文件(因ChrootDirectory权限限制),需创建专用上传目录并赋予用户写权限:
sudo mkdir /home/username/upload # 创建上传目录
sudo chown username:sftpusers /home/username/upload # 目录所有者设为用户及sftpusers组
sudo chmod 755 /home/username/upload # 目录权限设为755(或775,根据需求调整)
6. 重启SSH服务使配置生效
修改配置文件后,必须重启SSH服务才能应用更改:
sudo systemctl restart sshd # 重启SSH服务
# 或使用旧版命令(部分系统兼容):
# sudo service ssh restart
7. 验证SFTP连接
使用SFTP客户端(如命令行工具或FileZilla)测试连接,确保配置正确:
sftp username@your_server_ip # 替换为实际用户名和服务器IP
登录后,尝试上传文件到upload目录,确认操作成功:
put local_file.txt upload/ # 上传本地文件到服务器upload目录
ls upload/ # 查看upload目录内容
常见问题排查
/var/log/auth.log日志文件,查看具体错误信息(如密码错误、权限问题)。ChrootDirectory路径无拼写错误。ForceCommand:确保Match块语法正确(缩进不影响配置,但建议保持一致性),且未与其他配置冲突。