温馨提示×

centos sftp用户如何创建

小樊
40
2026-10-05 22:29:25
栏目: 智能运维

在 CentOS 上创建一个仅用于 SFTP 的用户(通常不能 SSH 登录,只能传文件),最常用、最安全的做法是使用 OpenSSH 的 internal-sftp + Chroot。下面一步一步来。


一、创建 SFTP 用户

# 创建用户(不允许登录 shell)
useradd -m -s /sbin/nologin sftpuser

# 设置密码
passwd sftpuser

二、创建 SFTP 根目录(Chroot 目录)

⚠️ Chroot 目录必须由 root 拥有,且其他用户不可写

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

给用户一个可写目录

mkdir -p /data/sftp/upload
chown sftpuser:sftpuser /data/sftp/upload
chmod 755 /data/sftp/upload

三、配置 SSH(关键)

编辑 SSH 配置文件:

vi /etc/ssh/sshd_config

1️⃣ 注释或确认这一行存在(默认有)

Subsystem sftp internal-sftp

2️⃣ 在文件末尾添加:

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

如果是多个用户,可用:

Match Group sftpusers

并先创建组:

groupadd sftpusers
usermod -aG sftpusers sftpuser

四、重启 SSH 服务

systemctl restart sshd

五、测试 SFTP 登录

sftp sftpuser@服务器IP

登录后:

  • 根目录是 /(实际是 /data/sftp)
  • 只能进入 upload 目录并上传文件

六、常见问题

❌ 登录失败:bad ownership or modes for chroot

原因:

  • Chroot 目录不是 root 拥有
  • Chroot 目录权限不是 755

✅ 解决:

chown root:root /data/sftp
chmod 755 /data/sftp

❌ 能登录但无法上传

原因:

  • 在 Chroot 根目录直接写文件(不允许) ✅ 解决:
  • 只能写在 upload 等子目录

七、(可选)只允许密钥登录

# 创建 .ssh
mkdir -p /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh

# 放公钥
vi /home/sftpuser/.ssh/authorized_keys
chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh

并在 sshd_config 中:

PasswordAuthentication no

如果你需要:

  • 多用户隔离
  • 限制磁盘配额
  • 使用 FTP/SFTP 管理面板

可以继续问我。

0 踩