温馨提示×

CentOS SFTP如何禁止登录

小樊
34
2026-08-30 01:19:52
栏目: 智能运维

CentOS 上“禁止 SFTP 登录”要看你想禁止哪些用户/场景,常见做法如下(按使用频率排序)。


一、禁止某个用户通过 SFTP 登录(最常用 ✅)

方法 1:锁定用户账户(推荐)

usermod -L 用户名
  • -L:锁定账户(密码前加 !
  • 该用户 不能 SSH / SFTP 登录
  • 但可保留系统其他权限(如 cron)

解锁:

usermod -U 用户名

方法 2:在 SSH 配置中禁止该用户 SFTP

编辑 SSH 配置:

vim /etc/ssh/sshd_config

添加或修改:

Match User 用户名
    ForceCommand /bin/false

或:

Match User 用户名
    DenyUsers 用户名

重启 SSH:

systemctl restart sshd

✅ 效果:该用户无法 SSH / SFTP


二、禁止所有用户 SFTP,只允许 SSH(或反之)

禁止 SFTP(只允许 shell)

Subsystem sftp /bin/false

或注释掉:

# Subsystem sftp /usr/libexec/openssh/sftp-server

重启:

systemctl restart sshd

三、只允许少数用户使用 SFTP(白名单 ✅)

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


四、禁止 root 用户 SFTP(安全必做 ✅)

PermitRootLogin no

或:

PermitRootLogin prohibit-password

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

⚠️ SFTP 默认走 22 端口(SSH)

  • 封端口会影响 所有 SSH 登录
  • 不建议单独用防火墙禁止 SFTP

六、禁止 SFTP 但允许 SCP(进阶)

ForceCommand /usr/bin/scp

⚠️ 控制复杂,不常用


七、最常用方案总结 ✅

需求 推荐做法
禁止单个用户 SFTP usermod -L
禁止所有 SFTP 注释 Subsystem sftp
只允许部分用户 SFTP Match Group
禁止 root SFTP PermitRootLogin no

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

  • ✅ CentOS 版本(7 / 8 / Stream)
  • ✅ 想禁 全部 还是 某个用户
  • ✅ 是否允许 SSH 登录

我可以给你最直接可用的配置方案

0