温馨提示×

怎么禁止CentOS SFTP登录

小樊
41
2026-07-08 18:11:23
栏目: 智能运维

在 CentOS 上禁止 SFTP 登录,常见做法取决于你是禁止某个用户/组,还是完全关闭 SFTP。下面按常见场景给你总结(适用于 CentOS 7/8,使用 OpenSSH)。


一、禁止某个用户或用户组使用 SFTP(最常用 ✅)

方法 1:使用 DenyUsers(推荐)

编辑 SSH 配置文件:

vim /etc/ssh/sshd_config

添加:

DenyUsers testuser

或禁止多个用户:

DenyUsers user1 user2

然后重启 SSH:

systemctl restart sshd

✅ 效果:

  • 禁止该用户 SSH + SFTP
  • 最安全、最简单

方法 2:禁止某个用户组 SFTP

1️⃣ 创建禁止 SFTP 的用户组:

groupadd nosftp

2️⃣ 将用户加入该组:

usermod -aG nosftp testuser

3️⃣ 编辑 /etc/ssh/sshd_config

DenyGroups nosftp

4️⃣ 重启 SSH:

systemctl restart sshd

✅ 适合批量禁止用户


二、只允许 SSH,禁止 SFTP(高级用法)

方法:限制用户只能使用 shell,不能启动 sftp-server

编辑 /etc/ssh/sshd_config

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

改为:

Subsystem sftp /bin/false

⚠️ 不推荐:会影响所有用户,且容易误伤


三、禁止所有 SFTP,只保留 SSH(最干净 ✅)

方法:直接禁用 SFTP 子系统

编辑:

vim /etc/ssh/sshd_config

注释或删除:

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

或者改为:

Subsystem sftp none

重启 SSH:

systemctl restart sshd

✅ 效果:

  • 所有用户 无法使用 SFTP
  • SSH 登录仍然可用

四、禁止 SFTP 但允许 SCP(部分可行)

⚠️ 注意:
SFTP 和 SCP 都依赖 SSH,无法完全区分

但你可以:

  • 禁止 sftp-server
  • 限制用户 shell(如 rbash
  • 使用 ForceCommand

示例(限制用户只能执行指定命令):

Match User testuser
    ForceCommand /bin/bash

五、验证是否生效

从另一台机器测试:

sftp user@centos_ip
  • 如果提示 Connection closedPermission denied ✅ 成功

六、推荐方案总结 ✅

需求 推荐方式
禁止单个用户 SFTP DenyUsers
禁止一组用户 SFTP DenyGroups
完全关闭 SFTP 禁用 Subsystem sftp
安全加固 配合防火墙 + 密钥认证

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

  • ✅ 是 CentOS 7 还是 8
  • ✅ 想禁止 某个用户 / 所有用户
  • ✅ 是否允许 SSH / SCP

我可以给你一份精确配置方案

0