温馨提示×

如何给linux sftp加用户

小樊
44
2026-09-17 04:44:33
栏目: 智能运维

在 Linux 上给 SFTP 加用户,通常有两种常见场景:


一、创建普通系统用户并限制只能 SFTP(推荐)

这种方式最安全,用户 只能 SFTP,不能 SSH 登录

1️⃣ 创建用户

useradd -m sftpuser
passwd sftpuser

2️⃣ 修改用户家目录权限(重要)

chown root:root /home/sftpuser
chmod 755 /home/sftpuser

3️⃣ 创建 SFTP 上传目录

mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload

4️⃣ 修改 SSH 配置

编辑:

vi /etc/ssh/sshd_config

在文件末尾添加:

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

5️⃣ 重启 SSH

systemctl restart sshd

✅ 此时该用户只能 SFTP,不能 SSH


二、使用独立 SFTP 用户组(适合多用户)

1️⃣ 创建 SFTP 组

groupadd sftpusers

2️⃣ 创建用户并加入组

useradd -m -G sftpusers sftpuser
passwd sftpuser

3️⃣ 设置目录权限

chown root:root /home/sftpuser
chmod 755 /home/sftpuser
mkdir /home/sftpuser/upload
chown sftpuser:sftpusers /home/sftpuser/upload

4️⃣ 修改 sshd_config

Match Group sftpusers
    ChrootDirectory /home/%u
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

5️⃣ 重启 SSH

systemctl restart sshd

三、常见问题排查

❌ 登录失败(权限错误)

  • ChrootDirectory 必须 root 拥有
  • 上传目录不能是 chroot 根目录

❌ 能 SSH 不能 SFTP

  • 检查 ForceCommand internal-sftp

✅ 测试连接

sftp sftpuser@服务器IP

如果你告诉我:

  • 用的是 CentOS / Ubuntu / Debian
  • 是否要 多用户
  • 是否要 指定目录 / 只读 / 写权限

我可以给你一套 可直接复制执行的配置

0