温馨提示×

CentOS如何禁用SFTP登录

小樊
34
2026-08-03 23:32:54
栏目: 智能运维

在 CentOS 中,如果你希望禁用 SFTP 登录(但保留 SSH 登录或完全禁止 SFTP),可以通过以下几种方式实现,按常用程度从高到低说明。


一、通过 SSH 配置禁用 SFTP(最推荐 ✅)

SFTP 由 OpenSSH 的 internal-sftp 提供,核心控制文件是 /etc/ssh/sshd_config

1️⃣ 检查当前是否启用了 SFTP

grep -R sftp /etc/ssh/sshd_config

常见配置:

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

或:

Subsystem sftp internal-sftp

2️⃣ 禁用 SFTP(所有用户)

方法 A:注释或删除 Subsystem

编辑配置:

vi /etc/ssh/sshd_config

找到:

Subsystem sftp internal-sftp

改为:

#Subsystem sftp internal-sftp

或直接删除这一行。

✅ 效果:

  • SSH 仍然可用
  • SFTP 无法连接

3️⃣ 仅允许 SSH,禁止 SFTP

systemctl restart sshd

验证:

sftp user@IP
# 应提示 connection closed 或 broken pipe

二、针对特定用户 / 用户组禁用 SFTP(更精细 ✅)

如果你只想禁止某些用户使用 SFTP,可以使用 Match 规则。

示例:禁止 user1 使用 SFTP

vi /etc/ssh/sshd_config

添加:

Match User user1
    ForceCommand /bin/bash

或更直接地:

Match User user1
    ForceCommand /bin/false

✅ 效果:

  • user1 不能 SFTP
  • SSH 登录受限(取决于配置)

示例:禁止某个用户组使用 SFTP

Match Group nosftp
    ForceCommand /bin/false

将用户加入该组:

groupadd nosftp
usermod -aG nosftp user1

三、通过防火墙或端口限制(不推荐单独使用 ⚠️)

SFTP 使用 SSH 的 22 端口,单独禁端口会影响 SSH。

不推荐,但可作为辅助手段。


四、完全禁止 SSH + SFTP(最彻底 ❌)

如果你连 SSH 都不想让该用户使用:

usermod -s /sbin/nologin user1

或:

usermod -L user1

五、验证是否成功 ✅

测试 SFTP

sftp user@IP

测试 SSH

ssh user@IP

六、推荐方案总结 ✅

需求 推荐方式
完全禁用 SFTP 注释 Subsystem sftp
仅禁止部分用户 Match User/Group
禁止登录系统 /sbin/nologin
保留 SSH 不禁用 SSH

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

  • CentOS 版本(7 / 8 / Stream)
  • 是否允许 SSH
  • 是否针对所有用户

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

0