温馨提示×

centos sftp用户怎样创建

小樊
48
2026-09-18 03:22:18
栏目: 智能运维

在 CentOS 上创建一个仅用于 SFTP 的用户(不能 SSH 登录,只能传文件)是最常见需求。下面给你一套标准、安全、可直接用的做法。


一、创建 SFTP 用户(禁止 SSH 登录)

1. 创建用户

useradd -m -s /sbin/nologin sftpuser

设置密码:

passwd sftpuser

-s /sbin/nologin 表示禁止 SSH 登录,但允许 SFTP


二、创建 SFTP 根目录(关键)

⚠️ SFTP 根目录所有者必须是 root,且权限不能大于 755

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

创建用户可写目录:

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

三、配置 SSH(关键)

编辑配置文件:

vi /etc/ssh/sshd_config

1. 注释或确认这一行

# Subsystem sftp /usr/libexec/openssh/sftp-server

2. 添加 SFTP 子系统

Subsystem sftp internal-sftp

3. 在文件末尾添加

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

如果有多个用户:

Match Group sftp
    ChrootDirectory /data/sftp/%u
    ForceCommand internal-sftp

四、重启 SSH 服务

systemctl restart sshd

五、测试 SFTP 登录

sftp sftpuser@服务器IP

登录后:

sftp> cd upload
sftp> put test.txt

六、常见问题

❌ 登录失败:broken pipe

原因:

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

✅ 正确:

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

✅ 想让多个用户共用一个目录?

chown root:sftp /data/sftp/share
chmod 775 /data/sftp/share

七、可选增强(安全)

  • 限制 IP
  • 禁止密码登录,只用密钥
  • 使用 Match Group sftp 批量管理

如果你告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 是否要多个用户
  • 是否允许公网访问

我可以给你更精确的配置。

0 踩