在 CentOS 上实现 SFTP 共享(基于 OpenSSH),常见有两种场景:
下面以 CentOS 7 / 8 / Stream 通用方案说明。
yum install -y openssh-server
systemctl enable sshd
systemctl start sshd
ssh -V
适合:
✅ 用户可用 SFTP
✅ 同时可使用 SSH(可选)
useradd sftpuser
passwd sftpuser
mkdir -p /data/sftp/shared
chown sftpuser:sftpuser /data/sftp/shared
chmod 755 /data/sftp/shared
sftp sftpuser@服务器IP
特点:
/data/sftp)groupadd sftpusers
useradd -g sftpusers -s /sbin/nologin sftpuser
passwd sftpuser
⚠️ Chroot 目录必须 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:sftpusers /data/sftp/sftpuser/upload
chmod 755 /data/sftp/sftpuser/upload
目录结构:
/data/sftp/sftpuser (root 755)
└── upload (sftpuser 可写)
编辑:
vim /etc/ssh/sshd_config
注释或确认:
Subsystem sftp internal-sftp
在文件末尾添加:
Match Group sftpusers
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
systemctl restart sshd
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查看日志:
tail -f /var/log/secure
常见错误:
临时关闭测试:
setenforce 0
永久关闭(生产不推荐):
vim /etc/selinux/config
SELINUX=disabled
✅ 推荐正确做法:
setsebool -P ssh_chroot_rw_homedirs on
sshd_config)/var/log/secure| 需求 | 推荐方案 |
|---|---|
| 简单文件传输 | 普通用户 SFTP |
| 隔离用户 | Chroot SFTP |
| 多用户共享 | Chroot + 组 |
如果你愿意,我可以:
✅ 给你 一键脚本
✅ 帮你 对接 Windows / FileZilla
✅ 教你 配置 SFTP + Nginx / Samba
你现在是 几个用户?隔离还是共享?