温馨提示×

centos如何禁止sftp访问

小樊
46
2026-09-21 06:28:39
栏目: 智能运维

在 CentOS 上“禁止 SFTP 访问”通常有以下几种常见场景,你可以根据需求选择对应方案。


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

方法 1:禁用 sftp-server 子系统

编辑 SSH 配置文件:

vi /etc/ssh/sshd_config

找到或添加这一行:

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

直接注释掉:

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

重启 SSH:

systemctl restart sshd

✅ 效果:所有用户都无法使用 SFTP,但 SSH 登录仍可用。


二、禁止特定用户的 SFTP(保留 SSH)

方法 2:使用 Match User 禁止 SFTP

vi /etc/ssh/sshd_config

在文件末尾添加:

Match User testuser
    ForceCommand /bin/bash

或更严格:

Match User testuser
    DisableForwarding yes
    ForceCommand /usr/sbin/nologin

重启 SSH:

systemctl restart sshd

✅ 效果:testuser 不能 SFTP,也不能执行远程命令。


三、只允许 SFTP,禁止 SSH(反向需求,供参考)

如果你本来是“只允许 SFTP”,可以这样写:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp

四、通过防火墙禁止 SFTP 端口(不推荐)

SFTP 走的是 SSH 端口(默认 22),不能单独禁 SFTP 端口而不影响 SSH


五、验证是否生效

从客户端测试:

sftp user@centos_ip

若被禁止,会提示:

  • Connection closed
  • This service allows shell access only

六、常见误区

❌ 删除 sftp-server 文件(可能导致系统异常)
❌ 只改用户 shell 为 /sbin/nologin(仍可用 SFTP)
✅ 正确方式:改 sshd_config


如果你能说明:

  • 所有用户 还是 某个用户
  • 是否 允许 SSH 登录

我可以给你更精确的配置示例。

0