在 Debian 中,“禁用 SFTP”通常有以下几种理解场景。下面按常见需求逐一说明,你可以按需选择。
SFTP 由 SSH 的 Subsystem 提供,最简单的方式是禁用 SFTP 子系统。
编辑 SSH 服务配置:
sudo nano /etc/ssh/sshd_config
找到这一行:
Subsystem sftp /usr/lib/openssh/sftp-server
改成:
# Subsystem sftp /usr/lib/openssh/sftp-server
或者改为:
Subsystem sftp /bin/false
重启 SSH:
sudo systemctl restart ssh
✅ 效果:所有用户都无法使用 SFTP,但 SSH 仍可登录(如果允许)。
如果你希望用户能登录服务器但不能用 SFTP,可以限制:
Subsystem sftp /bin/false
效果同上,但更明确。
Match User testuser
ForceCommand /bin/bash
# 或直接禁止 SFTP
Subsystem sftp /bin/false
或完全禁止该用户使用 SFTP:
Match User testuser
DisableForwarding yes
ForceCommand /usr/sbin/nologin
重启 SSH:
sudo systemctl restart ssh
SFTP 使用 SSH 端口(默认 22),无法单独关闭 SFTP 端口而不影响 SSH。
如果你只想禁止外部访问:
sudo ufw deny 22
⚠️ 这会连 SSH 也禁止。
从客户端测试:
sftp user@server
应出现类似:
subsystem request failed on channel 0
✅ 表示 SFTP 已禁用。
| 需求 | 推荐方案 |
|---|---|
| 所有用户禁用 SFTP | 注释 Subsystem sftp |
| 指定用户禁用 | Match User |
| 保留 SSH 登录 | 不改 SSH 登录方式 |
| 禁止外部访问 | 防火墙(谨慎) |
如果你能说明:是想禁止所有用户 / 某个用户 / 只保留 SCP,我可以给你更精确的配置。