在 Debian 上添加 仅用于 SFTP 的用户(不能 SSH 登录,只能传文件)是常见需求。下面给你一套安全且常用的做法。
sudo adduser sftpuser
按提示设置密码(可留空若仅用密钥)。
SFTP 用户的根目录 必须归 root 所有,否则 chroot 会失败。
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
✅ 用户登录后看到的是 /upload
编辑:
sudo nano /etc/ssh/sshd_config
# Subsystem sftp /usr/lib/openssh/sftp-server
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
登录后应在 /upload 目录中。
如果还没限制:
sudo usermod -s /usr/sbin/nologin sftpuser
原因:
✅ 检查:
ls -ld /sftp/sftpuser
可用用户组方式:
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
然后:
sudo groupadd sftpusers
sudo usermod -G sftpusers sftpuser
如果你需要:
告诉我你的使用场景,我可以直接给你配置。