在 Debian 上限制 SFTP 用户权限,最常见、最安全的做法是使用 OpenSSH 内置的 SFTP 子系统 + chroot 限制,让用户只能访问自己的目录,不能登录 shell,也不能访问系统其他部分。
下面按推荐程度从高到低说明。
sudo adduser sftpuser
sudo usermod -s /usr/sbin/nologin sftpuser
sudo mkdir -p /sftp/sftpuser
sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser
sudo mkdir /sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /sftp/sftpuser/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
AllowTcpForwarding no
X11Forwarding no
如果有多个用户:
Match Group sftp
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
sudo systemctl restart ssh
✅ 效果:
/sftp/sftpuser/、/home 等sudo groupadd sftp
sudo usermod -aG sftp sftpuser
目录结构:
/sftp/
├── user1/
│ └── upload/
├── user2/
│ └── upload/
sshd_config:
Match Group sftp
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
sudo chmod 555 /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser/download
sudo chmod 333 /sftp/sftpuser/upload
Match User sftpuser
ForceCommand internal-sftp
原因:
✅ 正确:
chown root:root /sftp/sftpuser
如果你需要:
可以告诉我你的具体使用环境,我可以给你更精确配置。