下面是在 CentOS 上添加 SFTP 账号 的常用做法(仅 SFTP,禁止 SSH 登录),适用于 CentOS 7 / 8 / Stream。
useradd -m -s /sbin/nologin sftpuser
说明:
-m:创建家目录-s /sbin/nologin:禁止 SSH 登录passwd sftpuser
mkdir -p /data/sftp/sftpuser
chown root:root /data/sftp
chmod 755 /data/sftp
chown root:root /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser
SFTP 根目录必须属于 root,且不能有写权限
mkdir /data/sftp/sftpuser/upload
chown sftpuser:sftpuser /data/sftp/sftpuser/upload
chmod 755 /data/sftp/sftpuser/upload
编辑 SSH 配置文件:
vi /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /data/sftp/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
如果有多个用户,可用
Match Group sftpusers管理
systemctl restart sshd
sftp sftpuser@服务器IP
broken chroot✅ 检查:
ls -ld /data/sftp/sftpuser
必须是:
root:root
755
✅ 只能上传到 upload 目录
临时关闭测试:
setenforce 0
永久关闭(不推荐):
vi /etc/selinux/config
SELINUX=disabled
创建 SFTP 用户组:
groupadd sftpusers
usermod -aG sftpusers sftpuser
SSH 配置:
Match Group sftpusers
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
如果你需要:
可以告诉我你的具体需求,我可以给你定制方案 ✅