在 Ubuntu 上添加 SFTP 用户 并限制其只能使用 SFTP(不能 SSH 登录),常见做法是创建用户 + 设置家目录权限 + 使用 internal-sftp。下面给你一套标准、安全的做法。
sudo adduser sftpuser
如果只想用于 SFTP,可禁止 shell 登录:
sudo usermod -s /usr/sbin/nologin sftpuser
或:
sudo usermod -s /bin/false sftpuser
⚠️ SFTP 的根目录必须是 root 拥有,且其他用户不能写
sudo mkdir -p /sftp/sftpuser/upload
sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser
sudo chown sftpuser:sftpuser /sftp/sftpuser/upload
sudo chmod 755 /sftp/sftpuser/upload
✅ 正确权限结构:
/sftp/sftpuser (root:root, 755)
/sftp/sftpuser/upload (sftpuser:sftpuser, 755)
编辑 SSH 配置:
sudo nano /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
如果有多个用户,也可用
Match Group sftpusers
sudo systemctl restart ssh
在本地或另一台机器:
sftp sftpuser@服务器IP
✅ 成功后:
/sftp/sftpuser99% 是权限问题
ChrootDirectory 不能是用户可写root:root查看日志:
sudo tail -f /var/log/auth.log
sudo groupadd sftpusers
sudo usermod -aG sftpusers sftpuser
sshd_config 中:
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
如果你愿意,我可以帮你:
你现在用的是 Ubuntu 哪个版本?