在 Debian 上创建一个 仅用于 SFTP 的用户(通常不能 SSH 登录,只能传文件),可以按下面步骤来。
sudo adduser sftpuser
按提示设置密码(可留空或用密码)。
SFTP 用户的根目录 必须属于 root,且其他用户不可写。
sudo mkdir -p /srv/sftp/sftpuser
sudo chown root:root /srv/sftp/sftpuser
sudo chmod 755 /srv/sftp/sftpuser
创建用户可写目录:
sudo mkdir /srv/sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /srv/sftp/sftpuser/upload
编辑配置文件:
sudo nano /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /srv/sftp/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
如果是多个用户,可用:
Match Group sftp并
sudo addgroup sftp && sudo usermod -aG sftp sftpuser
sudo systemctl restart ssh
sftp sftpuser@服务器IP
登录后只能在 /upload 目录中读写。
如果刚才用的是 adduser,默认是不能 shell 登录的(只要没设 bash)。
可强制限制:
sudo usermod -s /usr/sbin/nologin sftpuser
✅ 报错:broken pipe / chroot failed
→ Chroot 目录必须是 root:root 且权限 ≤ 755
✅ 能登录但不能写
→ 在 Chroot 里再建子目录并改属主
如果你需要:
可以继续问我。