在 CentOS 上“禁止 SFTP 登录”通常有几种不同层级的做法,取决于你是完全禁用 SFTP、禁止某些用户、还是只允许 SCP 不允许 SFTP。下面按常见场景说明。
SFTP 在 CentOS 上通常依赖 sshd 中的 sftp-server 子系统。
编辑 SSH 配置:
vi /etc/ssh/sshd_config
找到这一行:
Subsystem sftp /usr/libexec/openssh/sftp-server
改为:
# Subsystem sftp /usr/libexec/openssh/sftp-server
或者干脆删除该行。
重启 sshd:
systemctl restart sshd
✅ 效果:所有用户都无法使用 SFTP,但 SSH / SCP 仍可正常使用(如果你没禁 SSH)。
例如禁止用户 testuser 使用 SFTP:
Match User testuser
ForceCommand /bin/false
或只允许 SSH 登录但不能 SFTP:
Match User testuser
Subsystem sftp /bin/false
重启 sshd:
systemctl restart sshd
✅ 该用户无法 SFTP,但其他用户正常。
Match Group sftpdisabled
ForceCommand /bin/false
然后将用户加入该组:
usermod -aG sftpdisabled username
很多人想:能用 scp,但不能用 sftp
Match User username
ForceCommand /usr/bin/scp -t /
或更严格:
Match User username
ForceCommand /bin/false
⚠️ 注意:
ForceCommand /bin/false,SCP 也会被禁SFTP 走的是 SSH 端口(22),不能单独用防火墙禁 SFTP 而不影响 SSH。
❌ 不推荐
从客户端测试:
sftp user@centos_ip
若配置成功,会提示:
subsystem request failed on channel 0
或连接直接被拒绝。
| 需求 | 推荐方式 |
|---|---|
| 全局禁用 SFTP | 注释 Subsystem |
| 禁某用户 SFTP | Match User |
| 禁某组 SFTP | Match Group |
| 只禁 SFTP 保留 SCP | 注释 Subsystem |
如果你愿意,可以告诉我:
internal-sftp我可以给你更精确的配置。