在 Linux 上创建 SFTP 用户,通常有两种常见需求:
下面按 推荐方式一步一步说明。
使用
internal-sftp,限制用户只能访问指定目录,不能登录系统。
sudo useradd -m -s /sbin/nologin sftpuser
说明:
-m:创建家目录-s /sbin/nologin:禁止 SSH 登录设置密码:
sudo passwd sftpuser
sudo mkdir -p /data/sftp/sftpuser
sudo chown root:root /data/sftp/sftpuser
sudo chmod 755 /data/sftp/sftpuser
⚠️ SFTP 根目录必须属于 root,且不能是其他用户可写
sudo mkdir /data/sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /data/sftp/sftpuser/upload
用户登录后只能操作 upload 目录。
编辑配置文件:
sudo vim /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /data/sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
sudo systemctl restart sshd
sftp sftpuser@服务器IP
✅ 成功示例:
sftp>
如果确实需要 SSH 登录:
sudo useradd -m sftpuser
sudo passwd sftpuser
无需 ChrootDirectory,但安全性较低。
sudo groupadd sftpusers
sudo usermod -aG sftpusers sftpuser
sshd_config 中改为:
Match Group sftpusers
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
检查:
ls -ld /data/sftp/sftpuser
必须是:
drwxr-xr-x root root
sudo systemctl status sshd
sudo journalctl -u sshd -f
✅ 最安全 SFTP 用户配置
internal-sftpChrootDirectory 属主为 root如果你愿意,可以告诉我:
我可以给你一份 完全可直接用的配置。