温馨提示×

centos sftp怎样配置

小樊
42
2026-10-26 12:39:01
栏目: 智能运维

在 CentOS 上配置 SFTP,通常有两种常见需求:

  1. 系统用户直接用 SFTP(最简单)
  2. 限制用户只能 SFTP,不能 SSH 登录(更安全,常用)

下面我分别说明,你按需要选。


一、最基础的 SFTP 配置(系统用户可用)

CentOS 默认已安装 OpenSSH,SFTP 一般直接用。

1. 确认 sshd 服务

systemctl status sshd

如果没有运行:

systemctl start sshd
systemctl enable sshd

2. 创建用户(示例)

useradd sftpuser
passwd sftpuser

3. 测试 SFTP

sftp sftpuser@服务器IP

✅ 到这一步,普通 SFTP 就已经可用了。


二、限制用户只能 SFTP(不能 SSH 登录,推荐)

这是生产环境最常见做法。

1. 创建用户并禁止登录

useradd -m -s /sbin/nologin sftpuser
passwd sftpuser

2. 创建 SFTP 根目录

mkdir -p /data/sftp/sftpuser
chown root:root /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

4. 修改 SSH 配置

编辑:

vi /etc/ssh/sshd_config

注释或确认:

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

添加:

Subsystem sftp internal-sftp

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

如果有多个用户,可用:

Match Group sftp

5. 重启 SSH

systemctl restart sshd

6. 测试

sftp sftpuser@服务器IP

✅ 只能进 /upload 上传
❌ 不能 SSH 登录
❌ 不能访问系统其他目录


三、常见问题

1. 登录报错

fatal: bad ownership or modes for chroot directory

原因:Chroot 目录不是 root 拥有或权限不对
解决:

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

2. 防火墙

firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload

3. SELinux(如报错)

setsebool -P ssh_chroot_rw_homedirs on

四、总结

需求 做法
简单 SFTP 直接用系统用户
安全 SFTP Chroot + internal-sftp
多用户 用 Match Group

如果你告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 是否用密钥登录
  • 是否要多用户隔离

我可以给你一份可直接用的完整配置。

0 踩