PermitRootLogin改成yes还是登不上root,sshd里不止这一道闸
国产化系统这两年装得越来越多,欧拉这类发行版有个出厂设定:默认禁止 root 直接 SSH 远程登录。于是网上教程遍地都是——改 /etc/ssh/sshd_config,把 PermitRootLogin 后面改成 yes,保存,齐活。可真到现场,不少人改完再连,密码对了还是被拒,提示照样把你挡在门外。配置明明照抄了,为什么没用?因为 root 能不能从远程进来,这一行配置只管其中一道闸。sshd 的认证是一条链,链上任何一环没对上,最后都是「拒绝」两个字,而且提示长得几乎一样。
先排查生效问题:改了不等于生效
第一步永远先问自己:改完配置,重启服务了吗?sshd 只在启动时读一遍配置文件,改完不执行 systemctl restart sshd,机器跑的还是老配置。这是这类「照教程改了没用」的头号原因,一行命令的事,先把它排掉。重启完再试一次,还不通,才继续往下查三道闸。
三道闸挨个过
- 密码认证这道闸。PermitRootLogin yes 只是「允许 root 登录」,没说「允许 root 用密码登录」。如果 PasswordAuthentication 是 no(安全加固里常见这么配),root 拿密码敲门自然没人应。确认这项与 root 登录方式匹配。
- 限源名单这道闸。配置里如果有 AllowUsers 或 DenyUsers 一类的条目,登录资格就变成白名单制——名单里没有 root,前面全白配。把配置文件里这几行找出来核对一遍。
- 安全模块这道闸。SELinux、PAM 这一层的策略也可能单独拦 root 的远程会话,安全基线高的环境尤其常见。前两道都过了还登不上,就往这一层查。
定位别靠猜,看日志
三道闸查不动的时候,别来回试密码。登录失败的原因都记在系统日志里,/var/log/secure 一打开,哪一次拒绝、卡在哪一环写得清清楚楚,比猜快得多。
最后说句扎心的:默认禁 root 是对的
很多环境出厂禁 root,不是跟你过不去,是安全基线的要求——等保视角下,root 直接暴露在远程登录口上,风险敞口太大。规范的做法是普通账号登录、需要权限时 sudo 提权,root 日常留在本机控制台。真要开,也建议限定来源、限定密钥方式,用完收回。贵州诚鑫致达科技在做信创环境运维交付时,服务器登录权限一律按最小化原则收敛,root 直登这种口子能不开就不开。你手上的服务器,root 还在直接远程登录吗?评论区聊聊你们的安全基线。