温馨提示×

怎样禁用linux sftp

小樊
46
2026-10-29 08:21:29
栏目: 智能运维

在 Linux 中“禁用 SFTP”通常有几种不同层级的做法,取决于你是完全禁止 SSH 中的 SFTP,还是只允许/禁止某些用户。下面按常见场景说明。


一、完全禁用 SFTP(所有用户都不能用)

SFTP 依赖 sshd 中的 sftp-server 子系统。

方法 1:注释 SFTP 子系统(推荐)

编辑 SSH 配置:

sudo vim /etc/ssh/sshd_config

找到这一行:

Subsystem sftp /usr/lib/openssh/sftp-server

改成:

# Subsubsystem sftp /usr/lib/openssh/sftp-server

或直接删除/注释掉。

重启 SSH:

sudo systemctl restart sshd

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


二、只允许 SSH,不允许 SFTP(但保留功能)

如果不想动全局配置,可以用 ForceCommand。

sudo vim /etc/ssh/sshd_config

在文件末尾添加:

Match all
    ForceCommand /bin/bash

或更严格:

Match all
    ForceCommand internal-sftp -R

(不推荐完全禁用 shell 的方式,除非你很清楚用途)


三、仅禁用某些用户的 SFTP

方法:使用 Match 块

sudo vim /etc/ssh/sshd_config
Match User testuser
    ForceCommand /bin/bash

或彻底禁止:

Match User testuser
    Subsystem sftp none

重启:

sudo systemctl restart sshd

四、通过 Shell 限制(禁用登录 + SFTP)

如果用户不应该登录:

sudo usermod -s /usr/sbin/nologin username

或:

sudo usermod -s /bin/false username

✅ 同时禁止 SSH 和 SFTP。


五、使用防火墙(不推荐)

iptables -A INPUT -p tcp --dport 22 -m string --string "sftp" --algo bm -j DROP

⚠️ 不稳定、易误杀,不建议生产环境使用。


六、验证是否禁用成功

sftp user@host

若返回:

subsystem request failed on channel 0

说明已成功禁用。


总结建议

需求 推荐方式
全局禁用 SFTP 注释 Subsystem
禁用某用户 Match User
禁止登录 nologin / false
保留 SSH 不改 shell

如果你能说明:是服务器安全加固、还是限制特定用户、还是容器环境,我可以给你更精确的配置。

0 踩