在 CentOS 上禁用 SFTP 登录,通常有以下几种场景和做法,你可以根据需求选择。
SFTP 是通过 sshd 内部的 sftp-server 实现的,可以直接禁用。
vi /etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server
改成:
# Subsystem sftp /usr/libexec/openssh/sftp-server
systemctl restart sshd
✅ 效果:用户无法通过 SFTP 登录,但 SSH 命令行仍可登录
如果你只是不想让用户用 SFTP,但允许 SSH:
Subsystem sftp /bin/false
然后:
systemctl restart sshd
Match UserMatch User testuser
ForceCommand /bin/bash
# 或
# ForceCommand internal-sftp # 如果只想允许 sftp
如果你禁止该用户 SFTP:
Match User testuser
Subsystem sftp /bin/false
或者更直接:
Match User testuser
ForceCommand /usr/sbin/nologin
Match Group sftpdeny
Subsystem sftp /bin/false
如果用户只是不能登录系统(包括 SFTP):
usermod -s /sbin/nologin username
⚠️ 这样会同时禁止 SSH 和 SFTP
sftp user@centos_ip
如果返回:
subsystem request failed on channel 0
说明 SFTP 已禁用 ✅
| 需求 | 推荐方式 |
|---|---|
| 全部禁用 SFTP | 注释 Subsystem sftp |
| 只禁 SFTP 不禁用 SSH | Subsystem sftp /bin/false |
| 指定用户禁用 | Match User |
| 完全禁止登录 | nologin |
如果你能说明是 CentOS 几 + 是否用 FTP/SCP,我可以给你更精确配置。