要禁止 Linux 上的 SFTP 登录,需根据你是完全禁止 SFTP、禁止特定用户/组,还是只允许部分用户 SFTP 来决定方法。下面按常见场景说明。
适用于:服务器不想提供 SFTP 功能,但 SSH 还要用
SFTP 本质由 sshd 的 Subsystem 提供。
编辑配置文件:
sudo vim /etc/ssh/sshd_config
找到或添加:
# 注释或删除这一行
# Subsystem sftp /usr/lib/openssh/sftp-server
或改为:
Subsystem sftp none
重启 SSH 服务:
sudo systemctl restart sshd
✅ 效果:
Match 规则(最常用)Match User testuser
ForceCommand /bin/false
或:
Match User testuser
DenyUsers testuser
Match Group sftp_deny
ForceCommand /bin/false
重启 SSH:
sudo systemctl restart sshd
✅ 效果:
如果你问的是“如何禁止 SSH,只允许 SFTP”,用这个
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
sudo usermod -L username
或设置 shell:
sudo usermod -s /sbin/nologin username
✅ 效果:
SFTP 使用 SSH 端口(通常是 22):
iptables -A INPUT -p tcp --dport 22 -j DROP
❌ 缺点:
sftp user@server_ip
✅ 成功禁止时提示:
Connection closedPermission denied| 需求 | 推荐方式 |
|---|---|
| 完全禁止 SFTP | 禁用 Subsystem sftp |
| 禁止某些用户 | Match User/Group |
| 禁止账号 | usermod -L |
| 只允许 SFTP | ForceCommand internal-sftp |
如果你愿意,可以告诉我:
我可以给你精确可用的配置示例。