温馨提示×

centos sftp如何禁 root

小樊
44
2026-10-23 13:15:16
栏目: 智能运维

在 CentOS 上禁止 root 通过 SFTP 登录,常见且推荐的做法有以下几种(可单独或组合使用):


一、禁止 root 直接 SSH / SFTP 登录(最常用)

SFTP 默认走 SSH,所以禁止 root 的 SSH 登录即可。

1. 修改 SSH 配置

vi /etc/ssh/sshd_config

确保有以下配置:

PermitRootLogin no

如果是老版本,也可能是:

PermitRootLogin prohibit-password

但不允许 root 登录必须设为 no

2. 重启 SSH 服务

systemctl restart sshd

✅ 效果:root 无法通过 SSH 或 SFTP 登录


二、仅禁止 SFTP,但允许 SSH(不推荐)

如果你只想禁 SFTP 而保留 root SSH(一般不建议):

1. 修改 sshd_config

Subsystem sftp /usr/libexec/openssh/sftp-server

改为:

Subsystem sftp internal-sftp

2. 添加限制规则

Match User root
    ForceCommand internal-sftp
    AllowTcpForwarding no

或更简单粗暴:

Match User root
    Subsystem sftp none

⚠️ 这种方法复杂且容易出错,不推荐生产环境使用


三、使用独立 SFTP 用户(推荐做法)

1. 创建 SFTP 用户

useradd -m sftpuser
passwd sftpuser

2. 限制只能 SFTP

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no

四、防火墙 / 安全组层面(辅助)

  • 禁止 22 端口对公网开放 root
  • 使用密钥登录
  • 修改 SSH 端口

✅ 推荐方案总结

需求 推荐做法
禁止 root SFTP PermitRootLogin no
安全 SFTP 新建普通用户 + Chroot
生产环境 root 禁止登录 + 普通用户

如果你告诉我:

  • CentOS 版本(6 / 7 / 8 / Stream)
  • 是否使用 SELinux
  • 是否用 vsftpd / pure-ftpd

我可以给你完全对应的配置示例。

0 踩