温馨提示×

centos sftp用户怎样添加

小樊
35
2026-09-21 06:29:42
栏目: 智能运维

在 CentOS 上添加 SFTP 用户,通常做法是创建系统用户 + 限制只能使用 SFTP(不能 SSH 登录)。下面一步步说明。


一、创建 SFTP 用户

# 创建用户
useradd -m sftpuser

# 设置密码
passwd sftpuser

-m 会自动创建家目录 /home/sftpuser


二、创建 SFTP 专用目录(推荐)

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

⚠️ 注意
SFTP 根目录(chroot 目录)必须 属主是 root,且其他用户不可写


三、修改 SSH 配置(关键)

编辑配置文件:

vi /etc/ssh/sshd_config

1️⃣ 注释或确认这一行

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

改为:

Subsystem sftp internal-sftp

2️⃣ 在文件末尾添加

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

如果有多个用户:

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

四、创建 SFTP 用户组(可选,推荐)

groupadd sftp
usermod -G sftp sftpuser

然后 sshd_config 用:

Match Group sftp

五、重启 SSH 服务

systemctl restart sshd

六、测试 SFTP 登录

sftp sftpuser@服务器IP

只能访问:

/data/sftp/sftpuser

不能:

  • 执行 shell 命令
  • 访问系统其他目录

七、常见问题

❌ 登录报错:

Permission denied (publickey,password)

检查:

  • Chroot 目录属主必须是 root
  • 目录权限不能大于 755

✅ 使用密钥登录(可选)

mkdir -p /home/sftpuser/.ssh
cp id_rsa.pub /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh
chmod 600 /home/sftpuser/.ssh/authorized_keys

如果你需要:

  • 多个 SFTP 用户
  • 只读 / 只写权限
  • Docker / 宝塔 / 云服务器场景

告诉我,我可以给你定制方案。

0