在 Debian 上设置 SFTP 用户(只能使用 SFTP,不能 SSH 登录)通常推荐使用 OpenSSH 自带的 internal-sftp + Chroot 方式。下面给你一套安全、常用、可直接操作的步骤。
sudo adduser sftpuser
按提示设置密码(可留空或用密码)。
如果你想禁止 SSH 登录,只用 SFTP,后面会处理。
⚠️ Chroot 目录必须由 root 拥有,且其他用户不可写
sudo mkdir -p /sftp/sftpuser
sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser
sudo mkdir -p /sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /sftp/sftpuser/upload
用户登录后只能在 upload 目录里写文件。
编辑 SSH 配置:
sudo nano /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
PasswordAuthentication yes
保存后退出。
sudo systemctl restart ssh
在另一台机器或本机:
sftp sftpuser@服务器IP
登录后:
put / getssh sftpuser@ip/sftp/sftpuser 以外目录sudo usermod -s /usr/sbin/nologin sftpuser
broken pipe / chroot failed原因:
root:root755✅ 正确示例:
ls -ld /sftp/sftpuser
# drwxr-xr-x root root
/sftp/user1、/sftp/user2Match Group sftp 更方便sudo groupadd sftp
sudo usermod -G sftp sftpuser
sshd_config:
Match Group sftp
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
如果你需要:
可以继续问我。