温馨提示×

centos如何禁止sftp登录

小樊
34
2026-09-15 02:21:54
栏目: 智能运维

在 CentOS 上“禁止 SFTP 登录”通常有几种不同层级的做法,取决于你是完全禁用 SFTP禁止某些用户、还是只允许 SCP 不允许 SFTP。下面按常见场景说明。


一、完全禁止所有用户的 SFTP(最彻底)

SFTP 在 CentOS 上通常依赖 sshd 中的 sftp-server 子系统。

方法 1:注释/删除 sftp 子系统(推荐)

编辑 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)。


二、禁止某个用户 / 用户组使用 SFTP

方法 2:使用 Match 块限制用户

例如禁止用户 testuser 使用 SFTP:

Match User testuser
    ForceCommand /bin/false

或只允许 SSH 登录但不能 SFTP:

Match User testuser
    Subsystem sftp /bin/false

重启 sshd:

systemctl restart sshd

✅ 该用户无法 SFTP,但其他用户正常。


方法 3:禁止整个用户组

Match Group sftpdisabled
    ForceCommand /bin/false

然后将用户加入该组:

usermod -aG sftpdisabled username

三、禁止 SFTP 但允许 SCP(常见需求)

很多人想:能用 scp,但不能用 sftp

做法:限制 shell 或 ForceCommand

Match User username
    ForceCommand /usr/bin/scp -t /

或更严格:

Match User username
    ForceCommand /bin/false

⚠️ 注意:

  • 如果 ForceCommand /bin/false,SCP 也会被禁
  • 若只禁 SFTP,推荐方法一(注释 Subsystem)

四、通过防火墙禁止 SFTP(不推荐)

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

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 是否使用 internal-sftp
  • 是否用了 chroot

我可以给你更精确的配置。

0