温馨提示×

centos如何禁用sftp功能

小樊
38
2026-09-11 21:40:09
栏目: 智能运维

在 CentOS 上“禁用 SFTP”通常有几种不同层级的做法,取决于你是完全关闭 SSH 里的 SFTP、禁止某些用户使用 SFTP,还是只保留 SSH 登录但去掉 SFTP。

下面按常见场景说明。


一、彻底禁用 SFTP(所有用户都不能用)

SFTP 是 OpenSSH 的一个子系统(subsystem),最直接的方法是注释掉或删除 SFTP 子系统配置。

1. 编辑 SSH 配置

vi /etc/ssh/sshd_config

找到类似这一行:

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

改成:

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

或直接删除该行。

2. 重启 sshd

systemctl restart sshd

✅ 此后所有用户都无法使用 sftp,但 SSH Shell 登录仍然可用。


二、只允许部分用户使用 SFTP(禁止其他用户)

如果你希望只让特定用户用 SFTP,其余禁用,可以用 Match 配置。

示例:禁止所有用户 SFTP,仅允许 sftpuser

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

Match User *,!sftpuser
    ForceCommand /bin/false

或更精确一点:

Match Group nosftp
    ForceCommand /bin/false

然后把不想用 SFTP 的用户加入 nosftp 组。


三、禁用某个用户的 SFTP(但允许 SSH)

方法 1:使用 Match User

Match User testuser
    ForceCommand /bin/bash
    # 或不允许任何命令
    # ForceCommand /bin/false

方法 2:修改用户 shell(简单但不推荐)

usermod -s /sbin/nologin testuser

⚠ 这样该用户连 SSH 也登不了。


四、直接卸载 SFTP 服务(不推荐)

rpm -e openssh-server

❌ 会导致 SSH 也无法使用,不建议。


五、验证是否禁用成功

sftp user@localhost

如果看到类似:

subsystem request failed on channel 0

说明 SFTP 已禁用。


推荐方案总结

需求 推荐方式
完全禁用 SFTP 注释 Subsystem sftp
只允许管理员 SFTP Match User
按用户禁用 Match User + ForceCommand

如果你能说明是 CentOS 几 + 是否用 chroot + 是否还要保留 scp,我可以给你更精确配置。

0 踩