温馨提示×

CentOS如何禁用SFTP

小樊
45
2026-07-20 10:38:19
栏目: 智能运维

在 CentOS 上“禁用 SFTP”有多种理解方式,常见需求如下,你可以按需要选择对应方案。


一、完全禁用 SFTP(最彻底)

原理

SFTP 是由 sshd 内置的 sftp-serverinternal-sftp 提供的。只要 SSH 服务还在,就可以通过修改 sshd_config 来关闭 SFTP。

操作步骤(推荐)

  1. 备份配置文件
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  1. 编辑 SSH 配置
vi /etc/ssh/sshd_config
  1. 注释或删除 SFTP 子系统 常见配置如下,直接注释掉:
# Subsystem sftp /usr/libexec/openssh/sftp-server

或(较新系统)

# Subsystem sftp internal-sftp
  1. 重启 SSH 服务
systemctl restart sshd

✅ 效果:

  • SSH 仍可登录
  • SFTP 连接会被拒绝

二、仅禁止某些用户 / 用户组使用 SFTP

示例:禁止 sftpusers 组使用 SFTP

  1. 创建用户组
groupadd sftpusers
  1. 将用户加入组
usermod -aG sftpusers username
  1. 编辑 sshd_config
vi /etc/ssh/sshd_config

在文件末尾添加:

Match Group sftpusers
    ForceCommand /bin/false
  1. 重启 SSH
systemctl restart sshd

✅ 效果:

  • 该组用户 无法使用 SFTP 和 SSH
  • 适合“完全禁止登录”的场景

三、仅禁止 SFTP,但允许 SSH(高级)

使用 internal-sftp + ForceCommand

Match Group sftpusers
    ForceCommand internal-sftp

如果你 不希望 SFTP,但允许 SSH,则:

不要使用 ForceCommand internal-sftp
✅ 而是直接 移除 SFTP 子系统(方案一)

⚠️ OpenSSH 本身 不能做到“允许 SSH 但禁止 SFTP” 的细粒度控制,除非:

  • 使用第三方补丁
  • 或强制 shell 为 /bin/bash 并禁用 scp/sftp 客户端(不推荐)

四、彻底禁用 SSH + SFTP(不推荐)

systemctl disable sshd
systemctl stop sshd

⚠️ 会导致服务器无法远程管理


五、验证是否禁用成功

在客户端测试:

sftp user@server_ip

应看到类似:

Connection closed

subsystem request failed

✅ 推荐方案总结

需求 建议方案
完全禁用 SFTP 注释 Subsystem sftp
针对某些用户禁用 Match Group + ForceCommand
禁止所有远程登录 关闭 sshd

如果你能说明:

  • CentOS 版本(7 / 8 / Stream)
  • 是否允许 SSH
  • 是服务器安全 / 合规 / 防上传需求

我可以给你 最精确、安全的配置方案

0