在 CentOS 上禁止 root 通过 SFTP 登录,常见且推荐的做法有以下几种(可单独或组合使用):
SFTP 默认走 SSH,所以禁止 root 的 SSH 登录即可。
vi /etc/ssh/sshd_config
确保有以下配置:
PermitRootLogin no
如果是老版本,也可能是:
PermitRootLogin prohibit-password但不允许 root 登录必须设为 no
systemctl restart sshd
✅ 效果:root 无法通过 SSH 或 SFTP 登录
如果你只想禁 SFTP 而保留 root SSH(一般不建议):
Subsystem sftp /usr/libexec/openssh/sftp-server
改为:
Subsystem sftp internal-sftp
Match User root
ForceCommand internal-sftp
AllowTcpForwarding no
或更简单粗暴:
Match User root
Subsystem sftp none
⚠️ 这种方法复杂且容易出错,不推荐生产环境使用
useradd -m sftpuser
passwd sftpuser
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
| 需求 | 推荐做法 |
|---|---|
| 禁止 root SFTP | PermitRootLogin no |
| 安全 SFTP | 新建普通用户 + Chroot |
| 生产环境 | root 禁止登录 + 普通用户 |
如果你告诉我:
我可以给你完全对应的配置示例。