温馨提示×

centos怎么禁用sftp登录

小樊
46
2026-10-05 22:52:24
栏目: 智能运维

在 CentOS 上禁用 SFTP 登录,通常有以下几种场景和做法,你可以根据需求选择。


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

方法 1:修改 SSH 配置(推荐)

SFTP 是通过 sshd 内部的 sftp-server 实现的,可以直接禁用。

  1. 编辑 SSH 配置
vi /etc/ssh/sshd_config
  1. 注释或删除以下行(如果存在):
Subsystem sftp /usr/libexec/openssh/sftp-server

改成:

# Subsystem sftp /usr/libexec/openssh/sftp-server
  1. 重启 SSH 服务
systemctl restart sshd

✅ 效果:用户无法通过 SFTP 登录,但 SSH 命令行仍可登录


二、只允许 SSH,禁止 SFTP(不影响 shell 登录)

如果你只是不想让用户用 SFTP,但允许 SSH:

Subsystem sftp /bin/false

然后:

systemctl restart sshd

三、禁止特定用户的 SFTP(更精细)

方法:使用 Match User

Match User testuser
    ForceCommand /bin/bash
    # 或
    # ForceCommand internal-sftp  # 如果只想允许 sftp

如果你禁止该用户 SFTP:

Match User testuser
    Subsystem sftp /bin/false

或者更直接:

Match User testuser
    ForceCommand /usr/sbin/nologin

四、禁止某一用户组使用 SFTP

Match Group sftpdeny
    Subsystem sftp /bin/false

五、通过 Shell 禁止(简单粗暴)

如果用户只是不能登录系统(包括 SFTP):

usermod -s /sbin/nologin username

⚠️ 这样会同时禁止 SSH 和 SFTP


六、确认是否生效

sftp user@centos_ip

如果返回:

subsystem request failed on channel 0

说明 SFTP 已禁用 ✅


推荐方案总结

需求 推荐方式
全部禁用 SFTP 注释 Subsystem sftp
只禁 SFTP 不禁用 SSH Subsystem sftp /bin/false
指定用户禁用 Match User
完全禁止登录 nologin

如果你能说明是 CentOS 几 + 是否用 FTP/SCP,我可以给你更精确配置。

0 踩