在 CentOS 上禁止 root 通过 SFTP(以及 SSH)登录,通常有两种常见做法,取决于你的需求:
适用于:不允许 root 直接用 SFTP/SSH 登录,普通用户登录后再 su / sudo
vi /etc/ssh/sshd_config
找到或添加以下配置:
PermitRootLogin no
如果你只想禁止 SFTP 但允许 SSH(不推荐),见下文。
systemctl restart sshd
✅ 此后 root 无法使用 SFTP 或 SSH 登录
如果你希望 root 能 SSH,但不能 SFTP:
vi /etc/ssh/sshd_config
添加或修改:
Match User root
ForceCommand internal-sftp
AllowTcpForwarding no
但这其实是强制 SFTP,不是禁止。
Subsystem sftp /usr/libexec/openssh/sftp-server
改为:
# Subsystem sftp /usr/libexec/openssh/sftp-server
⚠️ 这会所有用户都不能 SFTP
PermitRootLogin no
useradd sftpuser
passwd sftpuser
Match User sftpuser
ChrootDirectory /data/sftp
ForceCommand internal-sftp
AllowTcpForwarding no
从另一台机器测试:
sftp root@centos_ip
应提示:
Permission denied (publickey,password).
如果你愿意,我可以: