在 Ubuntu 上配置 SFTP 权限,通常是为了让用户只能 SFTP 登录、不能 SSH 登录,并且限制在特定目录内。下面按常见场景一步步说明。
sudo addgroup sftpusers
sudo useradd -m -s /usr/sbin/nologin -g sftpusers sftpuser
sudo passwd sftpuser
/usr/sbin/nologin:禁止 SSH 登录sftpusers:统一管理的 SFTP 用户组sudo mkdir -p /sftp/sftpuser
sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser
⚠️ Chroot 目录必须归 root 所有
sudo mkdir /sftp/sftpuser/upload
sudo chown sftpuser:sftpusers /sftp/sftpuser/upload
sudo chmod 755 /sftp/sftpuser/upload
编辑:
sudo nano /etc/ssh/sshd_config
在文件末尾添加:
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
sudo systemctl restart ssh
sftp sftpuser@服务器IP
✅ Chroot 目录(/sftp/user):
✅ 用户可写目录:
❌ 错误示例(会导致登录失败):
chown sftpuser /sftp/sftpuser
sudo mkdir /sftp/shared
sudo chown root:root /sftp/shared
sudo chmod 755 /sftp/shared
sudo mkdir /sftp/shared/upload
sudo chown :sftpusers /sftp/shared/upload
sudo chmod 775 /sftp/shared/upload
broken pipe通常是:
查看日志:
sudo tail -f /var/log/auth.log
不推荐,安全性差。建议:
setfacl)做复杂权限如果你能告诉我:
我可以直接给你一份完整可用的配置。