温馨提示×

Linux SFTP如何创建用户

小樊
44
2026-08-15 19:28:28
栏目: 智能运维

在 Linux 上创建 SFTP 用户,通常有两种常见需求:

  1. 仅 SFTP(不能 SSH 登录) ✅(最常见、最安全)
  2. 既能 SFTP 又能 SSH

下面按 推荐方式一步一步说明。


一、仅 SFTP 用户(推荐)

使用 internal-sftp,限制用户只能访问指定目录,不能登录系统。

1️⃣ 创建用户

sudo useradd -m -s /sbin/nologin sftpuser

说明:

  • -m:创建家目录
  • -s /sbin/nologin:禁止 SSH 登录

设置密码:

sudo passwd sftpuser

2️⃣ 创建 SFTP 根目录

sudo mkdir -p /data/sftp/sftpuser
sudo chown root:root /data/sftp/sftpuser
sudo chmod 755 /data/sftp/sftpuser

⚠️ SFTP 根目录必须属于 root,且不能是其他用户可写


3️⃣ 创建可写目录

sudo mkdir /data/sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /data/sftp/sftpuser/upload

用户登录后只能操作 upload 目录。


4️⃣ 配置 SSH(关键)

编辑配置文件:

sudo vim /etc/ssh/sshd_config

在文件末尾添加:

Match User sftpuser
    ChrootDirectory /data/sftp/sftpuser
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

5️⃣ 重启 SSH

sudo systemctl restart sshd

6️⃣ 测试 SFTP

sftp sftpuser@服务器IP

✅ 成功示例:

sftp>

二、允许 SFTP + SSH(不推荐)

如果确实需要 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

四、常见问题排查

❌ 登录失败(Permission denied)

检查:

ls -ld /data/sftp/sftpuser

必须是:

drwxr-xr-x root root

❌ 连接被拒绝

sudo systemctl status sshd
sudo journalctl -u sshd -f

五、总结(推荐方案)

最安全 SFTP 用户配置

  • 使用 internal-sftp
  • ChrootDirectory 属主为 root
  • 只允许 SFTP,不允许 SSH

如果你愿意,可以告诉我:

  • Linux 发行版(CentOS / Ubuntu / Debian)
  • 是否需要 公钥登录
  • 是否要 多用户隔离

我可以给你一份 完全可直接用的配置

0