在 CentOS 中,如果你希望禁用 SFTP 登录(但保留 SSH 登录或完全禁止 SFTP),可以通过以下几种方式实现,按常用程度从高到低说明。
SFTP 由 OpenSSH 的 internal-sftp 提供,核心控制文件是 /etc/ssh/sshd_config。
grep -R sftp /etc/ssh/sshd_config
常见配置:
Subsystem sftp /usr/libexec/openssh/sftp-server
或:
Subsystem sftp internal-sftp
编辑配置:
vi /etc/ssh/sshd_config
找到:
Subsystem sftp internal-sftp
改为:
#Subsystem sftp internal-sftp
或直接删除这一行。
✅ 效果:
systemctl restart sshd
验证:
sftp user@IP
# 应提示 connection closed 或 broken pipe
如果你只想禁止某些用户使用 SFTP,可以使用 Match 规则。
vi /etc/ssh/sshd_config
添加:
Match User user1
ForceCommand /bin/bash
或更直接地:
Match User user1
ForceCommand /bin/false
✅ 效果:
Match Group nosftp
ForceCommand /bin/false
将用户加入该组:
groupadd nosftp
usermod -aG nosftp user1
SFTP 使用 SSH 的 22 端口,单独禁端口会影响 SSH。
不推荐,但可作为辅助手段。
如果你连 SSH 都不想让该用户使用:
usermod -s /sbin/nologin user1
或:
usermod -L user1
sftp user@IP
ssh user@IP
| 需求 | 推荐方式 |
|---|---|
| 完全禁用 SFTP | 注释 Subsystem sftp |
| 仅禁止部分用户 | Match User/Group |
| 禁止登录系统 | /sbin/nologin |
| 保留 SSH | 不禁用 SSH |
如果你愿意,可以告诉我:
我可以给你一份最精确的配置方案。