在 Debian 上“禁用 SFTP 登录”通常有几层含义,下面按常见需求场景分别说明,你可以按需选择。
SFTP 是通过 sshd 内部的 sftp-server 提供的,最直接的方法是在 SSH 配置中移除或注释 sftp 子系统。
sudo nano /etc/ssh/sshd_config
Subsystem sftp /usr/lib/openssh/sftp-server
# Subsystem sftp /usr/lib/openssh/sftp-server
sudo systemctl restart ssh
✅ 效果:所有用户都无法使用 SFTP,但 SSH 登录仍可用。
如果不想全局禁用,只是不让某些用户用 SFTP:
Match User testuser
ForceCommand /bin/bash
或更严格:
Match User testuser
DisableForwarding yes
⚠️ 但更推荐用“匹配组”的方式(见下)。
sudo groupadd nosftp
sudo usermod -aG nosftp username
sudo nano /etc/ssh/sshd_config
在文件末尾添加:
Match Group nosftp
ForceCommand /bin/bash
AllowTcpForwarding no
或彻底禁止 shell:
Match Group nosftp
Shell /bin/false
sudo systemctl restart 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 允许,我可以给你更精确的配置。