温馨提示×

如何禁止Linux SFTP登录

小樊
42
2026-07-31 13:21:42
栏目: 智能运维

禁止 Linux 上的 SFTP 登录,需根据你是完全禁止 SFTP禁止特定用户/组,还是只允许部分用户 SFTP 来决定方法。下面按常见场景说明。


一、完全禁止 SFTP(保留 SSH)

适用于:服务器不想提供 SFTP 功能,但 SSH 还要用

方法 1:修改 SSH 配置(推荐)

SFTP 本质由 sshdSubsystem 提供。

编辑配置文件:

sudo vim /etc/ssh/sshd_config

找到或添加:

# 注释或删除这一行
# Subsystem sftp /usr/lib/openssh/sftp-server

或改为:

Subsystem sftp none

重启 SSH 服务:

sudo systemctl restart sshd

✅ 效果:

  • SFTP 无法登录
  • SSH 登录不受影响

二、禁止指定用户/组使用 SFTP

方法 2:使用 Match 规则(最常用)

禁止单个用户

Match User testuser
    ForceCommand /bin/false

或:

Match User testuser
    DenyUsers testuser

禁止整个用户组

Match Group sftp_deny
    ForceCommand /bin/false

重启 SSH:

sudo systemctl restart sshd

✅ 效果:

  • 该用户/组无法使用 SFTP
  • 不影响其他用户

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

如果你问的是“如何禁止 SSH,只允许 SFTP”,用这个

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

四、彻底禁止 SSH + SFTP(直接封账号)

方法 3:锁定用户账号

sudo usermod -L username

或设置 shell:

sudo usermod -s /sbin/nologin username

✅ 效果:

  • 不能 SSH
  • 不能 SFTP

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

SFTP 使用 SSH 端口(通常是 22):

iptables -A INPUT -p tcp --dport 22 -j DROP

❌ 缺点:

  • SSH 也会被禁用
  • 不区分 SFTP / SSH

六、验证是否生效

测试 SFTP:

sftp user@server_ip

✅ 成功禁止时提示:

  • Connection closed
  • Permission denied

七、推荐方案总结

需求 推荐方式
完全禁止 SFTP 禁用 Subsystem sftp
禁止某些用户 Match User/Group
禁止账号 usermod -L
只允许 SFTP ForceCommand internal-sftp

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

  • ✅ 系统版本(CentOS / Ubuntu / Debian)
  • ✅ 是禁止某个用户,还是全部
  • ✅ 是否还要保留 SSH

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

0