在 CentOS 上“禁止 SFTP 登录”要看你想禁止哪些用户/场景,常见做法如下(按使用频率排序)。
usermod -L 用户名
-L:锁定账户(密码前加 !)解锁:
usermod -U 用户名
编辑 SSH 配置:
vim /etc/ssh/sshd_config
添加或修改:
Match User 用户名
ForceCommand /bin/false
或:
Match User 用户名
DenyUsers 用户名
重启 SSH:
systemctl restart sshd
✅ 效果:该用户无法 SSH / SFTP
Subsystem sftp /bin/false
或注释掉:
# Subsystem sftp /usr/libexec/openssh/sftp-server
重启:
systemctl restart sshd
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
然后:
groupadd sftpusers
usermod -aG sftpusers 用户名
✅ 非 sftpusers 组成员 无法 SFTP
PermitRootLogin no
或:
PermitRootLogin prohibit-password
⚠️ SFTP 默认走 22 端口(SSH)
ForceCommand /usr/bin/scp
⚠️ 控制复杂,不常用
| 需求 | 推荐做法 |
|---|---|
| 禁止单个用户 SFTP | usermod -L |
| 禁止所有 SFTP | 注释 Subsystem sftp |
| 只允许部分用户 SFTP | Match Group |
| 禁止 root SFTP | PermitRootLogin no |
如果你愿意,可以告诉我:
我可以给你最直接可用的配置方案。