温馨提示×

centos sftp如何禁root登

小樊
36
2026-09-06 03:19:30
栏目: 智能运维

在 CentOS 上禁止 root 通过 SFTP(以及 SSH)登录,通常有两种常见做法,取决于你的需求:


一、完全禁止 root 登录(推荐,最常见)

适用于:不允许 root 直接用 SFTP/SSH 登录,普通用户登录后再 su / sudo

1. 修改 SSH 配置

vi /etc/ssh/sshd_config

找到或添加以下配置:

PermitRootLogin no

如果你只想禁止 SFTP 但允许 SSH(不推荐),见下文。

2. 重启 SSH 服务

systemctl restart sshd

✅ 此后 root 无法使用 SFTP 或 SSH 登录


二、仅禁止 root 使用 SFTP,但允许 SSH(不常见)

如果你希望 root 能 SSH,但不能 SFTP

1. 修改 sshd_config

vi /etc/ssh/sshd_config

添加或修改:

Match User root
    ForceCommand internal-sftp
    AllowTcpForwarding no

但这其实是强制 SFTP,不是禁止。

更安全的做法(禁止 SFTP 子系统)

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

改为:

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

⚠️ 这会所有用户都不能 SFTP


三、推荐安全做法(生产环境)

  1. 禁止 root 登录
    PermitRootLogin no
    
  2. 创建普通用户
    useradd sftpuser
    passwd sftpuser
    
  3. 限制 SFTP 用户目录(Chroot)
    Match User sftpuser
        ChrootDirectory /data/sftp
        ForceCommand internal-sftp
        AllowTcpForwarding no
    

四、验证

从另一台机器测试:

sftp root@centos_ip

应提示:

Permission denied (publickey,password).

如果你愿意,我可以:

  • 帮你写 完整 SFTP 用户隔离配置
  • 区分 密码 / 密钥登录
  • 针对 CentOS 7 / 8 / Stream 给精确命令

0