禁用Root远程登录的核心是将PermitRootLogin设为no并重启sshd,同时创建带sudo/wheel权限的普通用户、启用密钥认证,并通过本地终端和VNC等通道验证与保底。

一、确认并修改主配置项 PermitRootLogin
这是最直接有效的协议层控制手段:
- 用有 sudo 权限的账户登录,备份原配置:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
- 编辑配置文件:sudo vim /etc/ssh/sshd_config
- 搜索 PermitRootLogin,确保只有一行未注释,且值为 no(不是
yes或prohibit-password) - 特别注意:检查是否有
Include /etc/ssh/sshd_config.d/*.conf;若有,需同步排查/etc/ssh/sshd_config.d/下所有 conf 文件,避免被子配置覆盖主配置 - 保存后立即重启服务:sudo systemctl restart sshd(Ubuntu/Debian/CentOS 均适用)
二、必须提前配好可用的普通运维账号
禁用 root 后若无替代入口,服务器将失联:
- 新建用户(如
admin):sudo adduser admin,按提示设密码 - 赋予提权能力:
• Ubuntu/Debian 执行:sudo usermod -aG sudo admin
• CentOS/RHEL 执行:sudo usermod -aG wheel admin - 验证是否生效:新开终端用该用户登录,执行 sudo whoami,应返回
root
三、推荐同步加固:关闭密码登录,启用密钥认证
仅禁 root 不够——攻击者仍可爆破普通用户密码再提权:
- 编辑
/etc/ssh/sshd_config,设置:
PasswordAuthentication no
PubkeyAuthentication yes - 本地生成密钥:ssh-keygen -t ed25519
- 上传公钥:ssh-copy-id admin@your-server-ip
- 确认
/home/admin/.ssh/authorized_keys存在且权限为600 - 重启 sshd 后,务必在新终端用密钥成功登录,再关闭密码登录
四、验证与保底措施不能跳过
不验证等于没做,操作中保留退路是基本素养:
- 保持当前 root 会话不关闭,新开终端执行:ssh root@localhost,应返回
Permission denied - 用普通用户登录后执行:sudo -i,确认能进入 root shell
- 检查云平台 VNC、物理控制台或带外管理(如 iDRAC/iLO)是否可用——这是最后的救命通道
- 若用了
AllowUsers,务必核对用户名拼写、账户状态、家目录及.ssh目录权限(700)

















