虚拟机忘记root密码,最快最直接的解决办法就是进入单用户模式或临时修改内核启动参数,重置完成后重启即可恢复访问,整个过程不需要重装系统,也不需要格式化磁盘。
虚拟机忘记root密码怎么办?先判断你的系统版本
密码忘掉的那一刻,很多人第一反应是重装系统,其实完全没必要,虚拟机和物理服务器在密码重置思路上没有本质区别,唯一的不同是虚拟机多了快照、克隆这类额外保险手段。
动手之前,先确认两件事:
- 你的虚拟机安装的是哪个Linux发行版,比如CentOS、Ubuntu、Debian
- 具体版本号是6代、7代还是更新版本
版本不同,进入救援模式的方式略有差异,CentOS 6及更早版本用single参数,CentOS 7及以上版本用rd.break参数,Ubuntu则可以在GRUB菜单中选择recovery mode,分清楚这一点,下面三种方法才能对症下药。
核心思路只有一条:在系统完全启动之前,通过修改GRUB引导参数,让系统跳过密码验证,直接进入root环境,然后用passwd命令重新设置密码。
单用户模式重置root密码(适合老版本系统)
业内专家指出,单用户模式是Linux系统最古老的密码重置方式,几乎适用于所有仍在使用SysV init的系统,比如CentOS 6、Debian 7及更早版本,新版系统大多也兼容此方法。
操作步骤如下:
- 开机或重启虚拟机,在GRUB引导界面出现时,迅速按键盘上的
e键进入编辑模式 - 找到以
linux16或linux开头的那一行,它包含内核启动参数 - 在这一行的末尾输入
single,或者在行尾追加数字1,两者效果等同 - 按
Ctrl + X或F10启动系统 - 系统会直接进入单用户模式的root shell,不需要输入密码
- 输入
passwd root,连续输入两次新密码 - 执行
reboot或init 6重启系统
这种方法的优点是过程短、见效快,整个重置流程控制在三分钟以内,缺点是进入单用户模式后,系统网络功能默认关闭,如果你依赖远程SSH重置密码,这条路行不通,需要借助虚拟机的VNC控制台或直接在虚拟化平台的管理界面操作。
rd.break模式重置root密码(适合CentOS 7及以上)
CentOS 7、RHEL 7及以上版本默认采用了新的initramfs机制,单用户模式偶尔会遇到密码验证绕不过去的情况,行业共识认为,rd.break是这套版本体系下最可靠的密码重置方案,在虚拟机场景中尤其稳定。
具体操作流程如下:
- 重启虚拟机,在GRUB引导界面按
e进入编辑模式 - 找到
linux开头的那一行,在行尾追加rd.break - 按
Ctrl + X启动,系统会在initramfs阶段中断,进入一个类似于switch_root:/#的命令行提示符 - 此时根目录处于只读状态,先执行
mount -o remount,rw /sysroot重新挂载为可写 - 执行
chroot /sysroot切换进真实的系统根目录 - 执行
passwd root设置新密码 - 如果你的系统启用了SELinux,需要执行
touch /.autorelabel,这一步用于重置文件的SELinux上下文,否则重启后可能出现无法登录或服务启动异常的问题 - 连续执行两次
exit退出chroot环境并继续引导系统
需要特别提醒的是,第7步不要跳过,很多人在虚拟机重置root密码后,重启时卡在登录界面或者SELinux报错,绝大多数原因就是漏掉了touch /.autorelabel这一步,系统在下次启动时会自动重新标注文件的安全上下文,标注过程可能需要几分钟,期间耐心等待,不要强制断电。
Live CD挂载重置root密码(适合一切失效场景)
如果你的虚拟机连GRUB引导都进不去,或者系统启动到一半就崩溃,前面两种方法就派不上用场了,这时候最稳妥的做法是借助Linux系统的Live CD镜像,通过挂载磁盘的方式重置密码。
这种方法在VMware和VirtualBox虚拟机中非常实用,因为虚拟光驱加载ISO镜像只是一个设置选项的问题。
操作步骤如下:
- 下载与你系统版本匹配的Linux安装镜像,比如CentOS或Ubuntu的ISO文件
- 在虚拟机的光驱设置中加载该ISO,并将启动顺序调整为光盘优先
- 开机进入光盘引导菜单,选择
Troubleshooting或Rescue a CentOS system(不同发行版名称略有差异) - 进入救援模式后,系统会尝试自动发现已有的Linux安装,选择
1挂载根分区 - 执行
chroot /mnt/sysroot切换进原系统环境 - 执行
passwd root重置密码 - 如果SELinux处于启用状态,同样执行
touch /.autorelabel - 执行
exit后用reboot重启,记得在重启前把光驱启动顺序改回硬盘优先,或者直接卸载ISO镜像文件
Live CD方法的兼容性最高,即使系统核心文件部分损坏,只要根分区还能读取,密码就能重置成功,缺点是需要准备ISO镜像并调整虚拟机的启动设置,整体耗时在十五分钟左右,比前两种方法稍长。
三种方法对比与选择建议
| 方法 | 适用系统版本 | 操作难度 | 耗时 | 适合场景 |
|---|---|---|---|---|
| 单用户模式 | CentOS 6及更早版本,部分新版本 | 简单 | 约3分钟 | 系统能正常进入GRUB界面 |
| rd.break模式 | CentOS 7及以上版本 | 中等 | 约5分钟 | 新版本系统首选,也是虚拟机重置root密码最常用的方案 |
| Live CD救援 | 所有版本 | 较复杂 | 约15分钟 | GRUB损坏或系统启动异常 |
多数情况下,rd.break模式是CentOS 7以上虚拟机的首选项,因为操作路径短,不需要额外准备外部介质,单用户模式则适合老系统,命令更少,Live CD模式虽然步骤多,但属于万能兜底方案,任何异常状态都能处理。
虚拟机重置root密码后的常见坑
重置密码只是第一步,重启之后能否正常登录同样关键,以下几个问题在实际操作中经常遇到:
- SELinux上下文错乱,这是最典型的翻车现场,表现为重置密码后系统能启动,但登录后命令行提示异常,或者部分服务无法启动,解决办法就是前文反复提到的
touch /.autorelabel,提前做了这一步,重启后系统会自动修复。 - 键盘布局问题,设置新密码时,如果虚拟机默认的键盘布局与你习惯的不一致,比如美式键盘下
y和z位置互换,容易导致密码输入错误,建议密码中不要包含特殊符号,先用纯字母数字组合,登录后再调整。 - 快照回滚是否更省事,如果你在虚拟机忘记密码之前创建过快照,且快照时间点附近没有重要的数据变更,直接回滚快照确实比重置密码快得多,但要注意,回滚会丢失快照之后的所有改动,包括新安装的软件和新增的数据,判断标准是:数据变更少就回滚,数据变更多就重置。
VMware虚拟机的用户需要留意,如果你的虚拟机启用了EFI安全引导,GRUB编辑界面的按键可能是e需要提前按,也有部分版本要求先进入固件设置关闭Secure Boot,否则修改引导参数后无法保存生效,这一点在VirtualBox中相对少见,因为VirtualBox默认使用BIOS引导。
虚拟机root密码重置高频疑问
虚拟机忘记root密码和物理服务器处理方式一样吗?
处理思路完全一样,都是通过修改引导参数进入救援环境重置密码,虚拟机反而多了一层便利,你可以随时创建快照或挂载外部镜像,操作风险远低于物理机操作,即使过程中出现失误,也不会导致硬件层面无法恢复。
重置密码后原来保存的SSH密钥还能用吗?
SSH密钥认证默认保存在/root/.ssh/authorized_keys文件中,重置密码不会改动这个文件,密钥认证依然有效,如果你之前一直用密钥登录,重置root密码更多是应急备份手段,新密码不影响既有的密钥配对关系,也无需重新生成密钥。
虚拟机root密码重置命令是固定的吗?
重置密码的核心命令始终是passwd root,不存在第二个替代命令,真正有差异的是进入救援环境的那几步引导参数,不同系统版本写法不同,比如CentOS 6用single,CentOS 7用rd.break,Ubuntu则可以通过GRUB高级选项直接进recovery mode,认清系统版本,选择对应的参数,剩下的流程大同小异。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/772208.html


