在 Debian 上配置 SFTP 权限,通常目标有几种常见场景:
下面按最常用、最安全的方式给你一套标准做法(基于 OpenSSH 内置 SFTP)。
sudo adduser sftpuser
(如果只做 SFTP,不建议设密码也可以,但一般还是设)
编辑 SSH 配置:
sudo nano /etc/ssh/sshd_config
确保有以下内容(或修改):
Subsystem sftp internal-sftp
在文件末尾添加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
重启 SSH:
sudo systemctl restart ssh
此时:
Chroot 目录权限要求非常严格:
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
⚠️ 注意:
sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload
sudo chmod 755 /home/sftpuser/upload
用户登录后:
/ = /home/sftpuser/uploadsudo groupadd sftpusers
sudo useradd -g sftpusers -s /usr/sbin/nologin user1
sudo useradd -g sftpusers -s /usr/sbin/nologin user2
sshd_config:
Match Group sftpusers
ChrootDirectory /srv/sftp
ForceCommand internal-sftp
目录权限:
sudo mkdir -p /srv/sftp
sudo chown root:sftpusers /srv/sftp
sudo chmod 755 /srv/sftp
共享目录:
sudo mkdir /srv/sftp/shared
sudo chown :sftpusers /srv/sftp/shared
sudo chmod 775 /srv/sftp/shared
一般是 Chroot 目录不是 root 拥有
ls -ld /home/sftpuser
sudo journalctl -u ssh
# 或
sudo tail -f /var/log/auth.log
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload
如果你愿意,可以告诉我:
我可以直接给你一份可直接用的配置。