温馨提示×

debian怎么禁用sftp登录

小樊
32
2026-10-06 13:49:42
栏目: 智能运维

在 Debian 上“禁用 SFTP 登录”通常有几层含义,下面按常见需求场景分别说明,你可以按需选择。


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

SFTP 是通过 sshd 内部的 sftp-server 提供的,最直接的方法是在 SSH 配置中移除或注释 sftp 子系统。

操作步骤

  1. 编辑 SSH 服务端配置
sudo nano /etc/ssh/sshd_config
  1. 找到这一行(通常存在):
Subsystem sftp /usr/lib/openssh/sftp-server
  1. 注释掉或删除:
# Subsystem sftp /usr/lib/openssh/sftp-server
  1. 重启 SSH 服务
sudo systemctl restart ssh

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


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

如果不想全局禁用,只是不让某些用户用 SFTP:

方法:在 sshd_config 中限制

Match User testuser
    ForceCommand /bin/bash

或更严格:

Match User testuser
    DisableForwarding yes

⚠️ 但更推荐用“匹配组”的方式(见下)。


三、按用户 / 用户组禁用 SFTP(推荐)

1. 创建禁止 SFTP 的组

sudo groupadd nosftp

2. 将用户加入该组

sudo usermod -aG nosftp username

3. 修改 sshd_config

sudo nano /etc/ssh/sshd_config

在文件末尾添加:

Match Group nosftp
    ForceCommand /bin/bash
    AllowTcpForwarding no

或彻底禁止 shell:

Match Group nosftp
    Shell /bin/false
  1. 重启 SSH
sudo systemctl restart ssh

四、直接禁止某个用户登录(包括 SFTP + SSH)

如果用户完全不需要登录:

sudo usermod -s /usr/sbin/nologin username

或

sudo passwd -l username

五、确认是否成功

在客户端测试:

sftp user@server

若返回:

subsystem request failed on channel 0

或连接被拒绝,说明已生效。


总结建议

需求 推荐方式
全服务器禁用 SFTP 注释 Subsystem sftp
指定用户不能 SFTP Match Group + ForceCommand
用户完全不能登录 nologin / passwd -l

如果你能说明是所有用户 / 某个用户 / 仅 SFTP 不允许 SSH 允许,我可以给你更精确的配置。

0 踩