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日志,定位具体错误原因(如权限不足、配置语法错误等)。