服务器开机卡在输入root密码忘了,最直接的解决办法是重启服务器,通过GRUB引导菜单进入单用户模式重置密码,整个过程大约5分钟就能完成。
服务器root密码忘了怎么办:重启进GRUB改密码是最高效路径
很多管理员第一次遇到root密码遗忘,第一反应是重装系统,其实这完全是“杀鸡用牛刀”,密码忘记的本质是认证数据被加密存放在/etc/shadow文件里,你只要能进入一个有权限修改这个文件的环境,问题就解决了,单用户模式恰恰就是这样一个环境,它默认以root身份运行,而且在多数发行版中无需密码即可进入。
重置root密码前需要确认的两个基础条件
动手之前,先确认你具备以下条件,否则可能白忙活。
- 物理或远程控制台权限:你得能重启服务器,并且能看到开机画面,物理机接显示器键盘,虚拟机在控制台窗口操作,云服务器则通过VNC或管理后台的“远程连接”进入。
- GRUB引导菜单未被密码保护:极少数安全加固过的服务器会为GRUB设置密码,如果碰上,你需要先解开GRUB密码才能继续,这个场景后面单独说。
确认没问题的话,直接进入核心操作环节。
centos忘记root密码重置的完整操作流程
CentOS是生产环境中最常见的发行版,也是这套操作的标准范式,整个流程可以拆成四个阶段,你跟着一步步做就行。
第一阶段:重启并打断GRUB倒计时
服务器通电或重启后,屏幕会出现黑底白字的GRUB菜单,如果你没装多系统,默认只有一项“CentOS Linux”,这时候立即用键盘上下键选中这一项,然后按下字母e键,进入编辑模式,手速要快,因为默认倒计时只有5秒。
第二阶段:修改内核启动参数
进入编辑界面后,你会看到一系列以linux16开头的行,这就是内核启动参数,用方向键把光标移到这一行的末尾,找到两个关键词:ro和rhgb。
| 参数 | 含义 | 需要改成 |
|---|---|---|
ro |
以只读方式挂载根文件系统,防止启动过程意外改写数据 | 改为rw,直接赋予写权限 |
rhgb |
Red Hat Graphical Boot,图形化启动动画,会干扰我们观察过程 | 直接删掉,精简输出 |
合并成一步操作:把光标移动到ro处,按Ctrl+k删除到行尾(或者在ro后面手动输入),然后重新敲上这行内容:
rw init=/sysroot/bin/sh
这个init=/sysroot/bin/sh的意思是,让内核跳过常规的系统初始化服务,直接启动一个shell,并把/sysroot目录(即原始根文件系统)作为初始根目录。
修改完成后,按下Ctrl+x或者b键启动,此时屏幕会快速滚动一串字符,最终停在一个sh-4.x#开头的命令行提示符,这就成功进入单用户模式了。
第三阶段:切换根目录并清理旧密码
这个shell环境还不够“完整”,根目录目前指向的是内存文件系统,而不是服务器上的真实硬盘,你需要执行一条命令完成根目录切换:
chroot /sysroot
执行后,提示符不会变化,但你已经身处真实的系统根目录了,现在直接重置root密码,最简单粗暴的方法是清空密码,这样下次登录不需要输入任何密码:
passwd -d root
如果你的系统版本较新(CentOS 7及以上),passwd -d可能被策略限制,更稳妥的通用做法是直接设定一个新密码:
passwd root
系统会提示你输入两次新密码,注意输入时屏幕不会显示任何字符,这是正常现象,不要以为键盘坏了。
第四阶段:更新SELinux上下文并重启
CentOS默认启用了SELinux安全模块,如果你选择的是清空密码(-d操作),文件的安全上下文标签会变化,导致下次开机SELinux报错或服务异常,所以需要执行一次重打标签:
touch /.autorelabel
这个命令会在根目录创建一个标记文件,下一次开机时引导程序会自动重新为所有文件写入SELinux上下文,完成后该文件自动消失。
如果是直接在passwd root里设置新密码,文件上下文一般不改变,但顺手敲一下touch /.autorelabel确保万无一失也完全没问题。
最后执行exit退出chroot,再执行reboot重启,服务器会像正常开机一样启动,但这次用新密码登录就畅通无阻了。
ubuntu忘记root密码单用户模式与恢复模式的差异
Ubuntu的机制和CentOS不太一样,它默认禁用root账户,日常用sudo提权,如果你忘了当前用户的密码,或者干脆忘了root密码,操作入口有些细微差别。
在GRUB菜单界面按下e键后,Ubuntu的引导参数和CentOS略有不同,你需要找到以linux开头的一行,同样是末尾找到ro并替换为rw,不过末尾追加的内容要换成:
init=/bin/bash
之后的流程完全相同:Ctrl+x启动,进入bash环境后直接执行passwd root,但因为Ubuntu默认root密码是锁定的(状态为),你需要先解锁再设密码:
passwd -u root passwd root
如果你用的是Ubuntu Server,并且想找回的是普通用户(比如ubuntu)的密码,也一样进了bash后直接passwd ubuntu即可,不需要解锁步骤。
与CentOS相比,ubuntu的恢复模式(Recovery Mode)入口更直观:GRUB菜单里选“Advanced options for Ubuntu”,再选带有(recovery mode)字样的内核条目,在弹出的菜单里选“root – Drop to root shell prompt”就能直接拿到root shell,完全不需要手改ro和init=参数,两种方式的结果是一样的。
云服务器root密码忘记了:救援模式与VNC控制台的选择
如果你用的是简米云、酷番云、AWS这类云服务器,情况又不太一样,云主机没有物理键盘,所有操作都依赖厂商提供的管理界面,而且部分云厂商的VNC控制台对早期的键盘交互支持不佳,按e键无响应的情况时有发生。
这时候有两种主流方案。
通过VNC进入GRUB重置(推荐熟悉命令行的用户)
打开云厂商控制台,找到“远程连接”或“VNC登录”入口,连接后重启实例,在GRUB界面出现的瞬间,多次按下方向键锁定菜单,再按e进入编辑,整个流程和物理机完全一致,唯一不确定因素是VNC画面传输延迟。
使用云厂商的“救援模式”或“重置密码”功能(推荐手生用户)
绝大多数国内云厂商控制台都自带“重置实例密码”按钮,点进去输入新密码,重启生效,全程不需要进入系统,这个功能相当于云平台在底层帮你改了密码,适合时间紧迫不想折腾GRUB的场合。
但如果你连云主机的登录用户名都忘了,或者要修改非root用户密码,控制台的重置功能就无能为力了,这时候还是老老实实走VNC进GRUB路线,行业共识认为,在无法物理接触且VNC交互不可依赖时,通过厂商提供的“救援系统”(挂载数据盘后chroot进去改密码)是最稳妥的兜底方案,但这个操作复杂度明显更高,适合资深运维处理。
一条安全修复前的必经检查:确认数据盘没有被写坏
业内专家指出,在单用户模式下修改root密码属于高危操作,最常见的翻车点是在chroot之前误执行了mount或其他磁盘检查命令,导致根分区以只读方式挂载,密码改完重启后不生效。
为了避免这种窘境,你在执行chroot /sysroot之前,可以先手动确认根分区挂载状态:
mount | grep sysroot
输出结果里正常情况下会显示/dev/vda1 on /sysroot type xfs (rw,...),注意括号里必须是rw,如果看到的是ro,说明你的修改没有生效,按Ctrl+D退出重启,重新走一遍流程,确保ro被替换成rw了。
还有一个容易被忽略的点:如果你的服务器启用了磁盘加密(LUKS),单用户模式加载时需要输入加密口令,这部分口令和root密码无关,是安装系统时设定的另一个口令,遗忘了这个口令,任何重置root密码的方法都救不了数据这属于加密层级的失守,只能通过密钥文件恢复,没有万能捷径。
忘记root密码这件事,防大于治
重置密码只能解决当下登录问题,很多服务器卡在输入root密码这一步,根源其实是运维侧习惯问题,这里给三条不复杂的预防建议。
- 密码不要“一口吃成胖子”,在密码管理器里备份一份,同时把root密码通过加密渠道(如企业密码仓库)交给至少一位同事托管。
- 设置GRUB密码,防止任何人物理接触服务器时直接进单用户模式改密码,GRUB密码和root密码分开设定,即使一个泄露,还有另一道防线。
- 每次大版本更新或批量修改用户权限后,顺手测试一次重启流程,确认密码重置路径没有被系统策略拦死。
相关问答
问:服务器root密码忘了,能不能在不重启的情况下找回?
不可以,root密码以哈希形式存储在/etc/shadow中,该文件在系统运行期间被锁定,任何用户态进程都无法直接改写,即使你还有其他管理员账号,sudo也救不了忘掉的root密码sudo验证的是当前用户自己的密码,唯一路径是让系统进入一个不经过完整认证流程的运行环境,也就是本文介绍的单用户模式或救援模式,这两个模式都要求重启才能进入。
问:重置root密码后,原来用root运行的服务或计划任务会不会受影响?
不会,密码重置只改变认证信息,不改变用户ID和权限,正在运行的进程、crontab任务、systemd服务都是以用户ID而非用户密码作为权限判定依据的,改密码不会中断任何现有会话,但如果你之前配置了需要用到root密码的自动化脚本(比如通过sshpass远程登录其他机器),那些脚本需要同步更新密码,否则会连不上,重启后已经建立的SSH会话会断开,重新登录用新密码即可。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/682624.html





