温馨提示×

CentOS怎样添加SFTP账号

小樊
41
2026-08-03 23:53:43
栏目: 智能运维

下面是在 CentOS 上添加 SFTP 账号 的常用做法(仅 SFTP,禁止 SSH 登录),适用于 CentOS 7 / 8 / Stream。


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

1. 创建用户

useradd -m -s /sbin/nologin sftpuser

说明:

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

2. 设置密码

passwd sftpuser

二、配置 SFTP 目录(推荐方式)

1. 创建 SFTP 根目录

mkdir -p /data/sftp/sftpuser

2. 设置目录权限(非常重要)

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

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

SFTP 根目录必须属于 root,且不能有写权限

3. 创建可写目录

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

三、配置 SSH(关键步骤)

编辑 SSH 配置文件:

vi /etc/ssh/sshd_config

1. 确认或添加以下内容

Subsystem sftp internal-sftp

2. 添加 SFTP 用户限制(放在文件末尾)

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

如果有多个用户,可用 Match Group sftpusers 管理


四、重启 SSH 服务

systemctl restart sshd

五、测试 SFTP 登录

本地测试

sftp sftpuser@服务器IP

使用工具

  • FileZilla
  • WinSCP
  • Xftp

六、常见问题排查

1. 登录失败,日志提示 broken chroot

✅ 检查:

ls -ld /data/sftp/sftpuser

必须是:

root:root
755

2. 无法上传文件

✅ 只能上传到 upload 目录

3. SELinux 问题(CentOS 常见)

临时关闭测试:

setenforce 0

永久关闭(不推荐):

vi /etc/selinux/config
SELINUX=disabled

七、批量管理(可选)

创建 SFTP 用户组:

groupadd sftpusers
usermod -aG sftpusers sftpuser

SSH 配置:

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

如果你需要:

  • 多用户隔离
  • 限制磁盘配额
  • 只允许特定 IP 登录
  • 使用密钥登录

可以告诉我你的具体需求,我可以给你定制方案 ✅

0