求助:输入正确密码仍无法以Linux系统Root身份登录
兄弟,我之前也碰到过一模一样的糟心事——明明确认密码没输错,就是死活登不上root账户!给你整理了几个亲测有效的排查方向和解决办法,你挨个试试:
先排查Root账户是不是被锁定了
很多Linux发行版为了安全,默认会锁定root账户。如果你能登录普通用户,先执行这个命令解锁:sudo passwd -u root
要是连普通用户都登不进去,那得进单用户模式操作:- Ubuntu/Debian系:开机按Shift键进入GRUB菜单,选「高级选项」,再选「恢复模式」,最后选择「root shell」进入命令行
- CentOS/RHEL系:开机在GRUB界面按
e编辑启动项,找到以linux开头的行,把ro替换成rw init=/sysroot/bin/sh,按Ctrl+X进入后,执行chroot /sysroot,再用上面的解锁命令操作
检查键盘布局是不是搞鬼了
别小看这个!我上次就是因为键盘布局从美式变成了英式,输密码的时候@变成了",自己还没发现。你可以在登录界面先随便输几个字符,看看显示的和你按的对不对;要是能进普通用户,用localectl status查看当前布局,不对的话用localectl set-keymap us改成美式键盘试试。确认Root密码真的没记错/输错
有时候脑子抽了记混密码也很正常!如果能进普通用户,先试试sudo su -能不能切换到root,要是这个能成功,说明你登录界面的密码输入肯定有问题;要是也失败,直接用sudo passwd root重新设置一个新密码,设置的时候慢点开,两次输入要一致。检查PAM模块的登录限制
有些系统的PAM配置会拦着root登录,你可以用普通用户登录后,打开/etc/pam.d/login或者/etc/pam.d/sshd(远程登录的话)看看,有没有类似auth required pam_deny.so的限制行,有的话先给它加个注释(行首加#),然后重启系统或者对应服务试试。远程SSH登录的话,检查sshd配置
要是你是远程登root,得看/etc/ssh/sshd_config里的PermitRootLogin参数,要是设成了no或者prohibit-password,肯定登不上。改成yes(注意:这会降低安全性,问题解决后建议改回prohibit-password或者no),然后重启SSH服务:- Ubuntu/Debian:
sudo systemctl restart sshd - CentOS/RHEL:
sudo systemctl restart sshd.service
- Ubuntu/Debian:
备注:内容来源于stack exchange,提问作者Aditya_Patil




