在 CentOS 上“禁用 SFTP 服务”通常有两种理解:完全禁止 SFTP(但保留 SSH),或关闭 SSH 服务(SFTP 也会随之关闭)。下面分别说明。
SFTP 是通过 SSH 的 Subsystem sftp 实现的,只要注释掉相关配置即可。
vi /etc/ssh/sshd_config
找到这一行:
Subsystem sftp /usr/libexec/openssh/sftp-server
将其注释或删除:
# Subsystem sftp /usr/libexec/openssh/sftp-server
systemctl restart sshd
✅ 效果:
sftp 命令无法使用如果不想完全禁用,可在 sshd_config 中使用 Match:
Match User testuser
ForceCommand /bin/bash
# 或
# DenyGroups sftpusers
或使用:
Match User testuser
ChrootDirectory /dev/null
如果服务器不需要 SSH:
systemctl stop sshd
systemctl disable sshd
⚠️ 注意:这会同时禁用 SSH 和 SFTP,且可能断开当前连接。
从客户端测试:
sftp user@centos_ip
若返回:
subsystem request failed on channel 0
说明 SFTP 已成功禁用。
如果你能说明 CentOS 版本(7 / 8 / Stream) 或 是否使用 SFTP 用户隔离(Chroot),我可以给出更精确方案。