CentOS 上配置 SFTP 不算难,尤其是只做“限制用户只能 SFTP、不能 SSH 登录”这种常见需求,步骤很固定。
下面给你一个最常见、最实用的方案(使用系统自带的 OpenSSH,不装额外软件)。
useradd sftpuser
passwd sftpuser
mkdir -p /sftp/sftpuser
chown root:root /sftp/sftpuser
chmod 755 /sftp/sftpuser
mkdir /sftp/sftpuser/upload
chown sftpuser:sftpuser /sftp/sftpuser/upload
⚠️ 注意:
SFTP 根目录必须属主是 root,且其他用户不可写
编辑:
vi /etc/ssh/sshd_config
注释或删除原来的:
# Subsystem sftp /usr/libexec/openssh/sftp-server
添加:
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
systemctl restart sshd
sftp sftpuser@服务器IP
✅ 成功
❌ 若报错,常见原因:
如果是 CentOS 默认开启 SELinux:
setsebool -P ssh_chroot_rw_homedirs on
| 需求 | 难度 |
|---|---|
| 普通 SFTP(系统用户) | ⭐ 非常简单 |
| 限定目录 + 禁 SSH | ⭐⭐ 中等 |
| 虚拟用户(无系统账号) | ⭐⭐⭐ 偏难 |
| 高安全审计 / 多租户 | ⭐⭐⭐⭐ |
你现在是 学习用 / 生产用 / 运维配置?