在 CentOS 上“禁止 SFTP 访问”通常有以下几种常见场景,你可以根据需求选择对应方案。
sftp-server 子系统编辑 SSH 配置文件:
vi /etc/ssh/sshd_config
找到或添加这一行:
Subsystem sftp /usr/libexec/openssh/sftp-server
直接注释掉:
# Subsystem sftp /usr/libexec/openssh/sftp-server
重启 SSH:
systemctl restart sshd
✅ 效果:所有用户都无法使用 SFTP,但 SSH 登录仍可用。
Match User 禁止 SFTPvi /etc/ssh/sshd_config
在文件末尾添加:
Match User testuser
ForceCommand /bin/bash
或更严格:
Match User testuser
DisableForwarding yes
ForceCommand /usr/sbin/nologin
重启 SSH:
systemctl restart sshd
✅ 效果:testuser 不能 SFTP,也不能执行远程命令。
如果你本来是“只允许 SFTP”,可以这样写:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
SFTP 走的是 SSH 端口(默认 22),不能单独禁 SFTP 端口而不影响 SSH。
从客户端测试:
sftp user@centos_ip
若被禁止,会提示:
Connection closedThis service allows shell access only❌ 删除 sftp-server 文件(可能导致系统异常)
❌ 只改用户 shell 为 /sbin/nologin(仍可用 SFTP)
✅ 正确方式:改 sshd_config
如果你能说明:
我可以给你更精确的配置示例。