把 SFTP 与 Ubuntu 用户绑定,通常是指:
让某个 Ubuntu 系统用户只能通过 SFTP 登录,并且只能访问指定目录,不能直接 SSH 登录。
下面给你一套标准、安全、常用的做法(基于 OpenSSH 的 internal-sftp)。
sftpsudo adduser sftpuser
sudo usermod -s /usr/sbin/nologin sftpuser
/usr/sbin/nologin表示 禁止 SSH 登录
⚠️ Chroot 目录必须归 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
✅ 最终结构:
/sftp/sftpuser/ (root:root, 755)
└── upload/ (sftpuser:sftpuser)
编辑 SSH 配置:
sudo nano /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
✅ 含义:
ChrootDirectory:限制根目录ForceCommand internal-sftp:只能 SFTPsudo systemctl restart ssh
sftp sftpuser@服务器IP
✅ 成功后应看到:
sftp>
✅ 只能看到 /sftp/sftpuser 作为根目录
检查:
755ls -ld /sftp/sftpuser
✅ 上传目录必须是用户可写:
/sftp/sftpuser/upload
Match User user1
ChrootDirectory /sftp/user1
ForceCommand internal-sftp
sudo groupadd sftpusers
sudo usermod -aG sftpusers sftpuser
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
/var/log/auth.logSFTP 与 Ubuntu 用户绑定 = 创建用户 + Chroot 目录 + sshd_config 限制
如果你需要:
可以直接告诉我你的使用场景,我可以给你定制配置。