温馨提示×

CentOS怎样实现SFTP共享

小樊
52
2026-08-04 00:27:37
栏目: 智能运维

在 CentOS 上实现 SFTP 共享(基于 OpenSSH),常见有两种场景:

  1. 普通用户 SFTP(推荐,安全)
  2. 仅 SFTP 隔离用户(Chroot,不能 SSH 登录)

下面以 CentOS 7 / 8 / Stream 通用方案说明。


一、基础环境准备

1. 安装 OpenSSH(一般已安装)

yum install -y openssh-server
systemctl enable sshd
systemctl start sshd

2. 确认 SSH 版本

ssh -V

二、方式一:普通用户 SFTP(最简单)

适合:
✅ 用户可用 SFTP
✅ 同时可使用 SSH(可选)

1. 创建用户

useradd sftpuser
passwd sftpuser

2. 创建共享目录

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

3. 测试 SFTP

sftp sftpuser@服务器IP

三、方式二:Chroot SFTP(最常用,企业推荐 ✅)

特点:

  • 用户 只能 SFTP
  • 不能 SSH 登录
  • 被限制在某个目录(如 /data/sftp)

1. 创建 SFTP 用户组

groupadd sftpusers

2. 创建 SFTP 用户

useradd -g sftpusers -s /sbin/nologin sftpuser
passwd sftpuser

3. 创建 SFTP 根目录(非常关键)

⚠️ Chroot 目录必须 root 拥有,且 755

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

4. 创建实际可写目录

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

目录结构:

/data/sftp/sftpuser   (root 755)
└── upload            (sftpuser 可写)

5. 配置 SSH(核心)

编辑:

vim /etc/ssh/sshd_config

注释或确认:

Subsystem sftp internal-sftp

在文件末尾添加:

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

6. 重启 SSH

systemctl restart sshd

7. 测试

sftp sftpuser@服务器IP

✅ 能登录
✅ 只能看到 /upload
✅ 不能 cd /


四、多用户共享同一目录(企业常见)

方案:统一目录 + 组权限

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

mkdir /data/sftp/shared/upload
chown root:sftpusers /data/sftp/shared/upload
chmod 2775 /data/sftp/shared/upload

添加用户:

useradd -g sftpusers -s /sbin/nologin user1
useradd -g sftpusers -s /sbin/nologin user2

SSH 配置:

ChrootDirectory /data/sftp/shared

⚠️ 注意:

  • /data/sftp/shared 必须是 root 755
  • 可写目录放在里面

五、常见问题排查

1. 登录失败

查看日志:

tail -f /var/log/secure

常见错误:

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

2. SELinux(CentOS 常见坑)

临时关闭测试:

setenforce 0

永久关闭(生产不推荐):

vim /etc/selinux/config
SELINUX=disabled

✅ 推荐正确做法:

setsebool -P ssh_chroot_rw_homedirs on

六、安全建议(强烈推荐)

  • ✅ 禁止 SFTP 用户 SSH
  • ✅ 使用密钥认证
  • ✅ 限制 IP(sshd_config)
  • ✅ 定期审计 /var/log/secure

七、总结(快速选方案)

需求 推荐方案
简单文件传输 普通用户 SFTP
隔离用户 Chroot SFTP
多用户共享 Chroot + 组

如果你愿意,我可以: ✅ 给你 一键脚本
✅ 帮你 对接 Windows / FileZilla
✅ 教你 配置 SFTP + Nginx / Samba

你现在是 几个用户?隔离还是共享?

0 踩