在CentOS系统的日常运维中,root用户拥有系统的最高权限,如果开放root用户的远程登录权限,会大幅增加服务器被暴力破解、恶意入侵的风险。因此生产环境下的CentOS服务器通常都会限制root用户远程登录,仅允许普通用户登录后通过提权操作获取管理权限。

限制root用户远程登录的核心原理
CentOS系统的远程登录服务通常由sshd服务提供,其主配置文件为/etc/ssh/sshd_config。限制root用户远程登录本质是修改该配置文件中的PermitRootLogin参数,同时为了避免配置后无法管理服务器,需要先创建具备sudo提权权限的普通用户。
具体操作步骤
1. 创建普通管理用户
首先登录CentOS系统,创建一个用于远程登录的普通用户,这里以创建用户admin为例:
# 创建用户admin useradd admin # 设置admin用户的密码 passwd admin
2. 赋予普通用户sudo权限
为了让普通用户能够执行管理操作,需要将其添加到wheel用户组,该组默认拥有sudo提权权限:
# 将admin用户加入wheel组 usermod -aG wheel admin
可以验证sudo权限是否生效,切换到admin用户后执行需要root权限的命令:
# 切换到admin用户 su - admin # 尝试查看/root目录内容,需要输入admin用户的密码 sudo ls /root
3. 修改sshd配置文件
使用root用户编辑/etc/ssh/sshd_config文件,找到PermitRootLogin配置项:
# 编辑sshd配置文件 vi /etc/ssh/sshd_config
在文件中找到如下配置,如果没有则手动添加:
# 原配置可能是PermitRootLogin yes,修改为no PermitRootLogin no
该参数的可选值说明如下:
- yes:允许root用户远程登录,默认配置
- no:完全禁止root用户远程登录
- prohibit-password:禁止root用户通过密码远程登录,但允许通过密钥登录
- forced-commands-only:仅允许root用户执行指定命令时远程登录
如果希望完全禁止root远程登录,直接设置为no即可;如果仅想禁止密码登录保留密钥登录,可以设置为prohibit-password。
4. 重启sshd服务使配置生效
修改完配置文件后,需要重启sshd服务让配置生效:
# CentOS 7及以上版本重启sshd服务 systemctl restart sshd # 设置sshd服务开机自启,避免重启后配置失效 systemctl enable sshd
配置验证
配置完成后,可以尝试使用root用户远程登录服务器,此时应该会登录失败,而使用刚才创建的admin用户则可以正常登录:
# 尝试用root用户远程登录,会提示权限拒绝 ssh root@服务器IP # 用admin用户远程登录,登录成功后再用sudo提权 ssh admin@服务器IP
常见问题说明
配置后无法登录怎么办
如果配置后所有用户都无法远程登录,需要到服务器本地控制台登录root用户,检查sshd配置文件是否有语法错误:
# 检查sshd配置文件语法 sshd -t
如果有错误会提示对应的行号,修正后重启服务即可。
是否需要保留root本地登录权限
限制root远程登录不会影响root用户的本地登录权限,服务器本地的控制台仍然可以使用root用户登录,因此不需要担心完全无法管理服务器的问题。
密钥登录的配置方式
如果设置为prohibit-password允许root密钥登录,需要提前将客户端的公钥添加到root用户的~/.ssh/authorized_keys文件中,同时保证该文件的权限为600,~/.ssh目录权限为700:
# 设置.ssh目录权限 chmod 700 /root/.ssh # 设置authorized_keys文件权限 chmod 600 /root/.ssh/authorized_keys
CentOSSSH配置root用户限制远程登录sshd_config修改时间:2026-07-22 18:51:26