CentOS 7虚拟机忘记用户名和密码无需焦虑,可通过3种方法轻松找回,具体包括进入单用户模式重置密码、通过救援模式修改用户信息,或利用虚拟机快照恢复(若已创建),这些操作无需重装系统,安全高效,能快速解决登录问题,确保虚拟机恢复正常使用。
在虚拟机使用过程中,偶尔会遇到“忘记用户名和密码”的尴尬情况——尤其是长时间未登录的CentOS 7系统,或多人共用虚拟机时,记不清登录信息是常有的事,别担心,CentOS 7作为主流Linux发行版,提供了多种“救急”方式帮你重置密码或找回用户名,本文将详细介绍3种实用方法,从最常用的Grub引导修改到急救模式,帮你快速恢复系统访问权限。
场景说明:为什么会出现忘记密码的情况?
在开始操作前,先简单梳理常见原因:
- 新安装的CentOS 7虚拟机,设置密码后长时间未使用,遗忘登录信息;
- 多人共用虚拟机,用户名或密码被误改/遗忘;
- 为了安全测试,故意设置复杂密码后未记录。
无论哪种情况,只要掌握以下方法,都能轻松解决。

方法一:Grub引导修改密码(最常用,成功率100%)
这是CentOS 7系统最经典的“救急”方式,通过在Grub启动菜单中进入单用户模式,绕过密码验证直接修改用户密码。前提:虚拟机能正常启动,且Grub菜单可见。
操作步骤:
重启虚拟机,进入Grub启动界面
开机时,快速按下 ESC 键(部分虚拟机可能是 Shift 或 Ctrl+C),进入Grub启动菜单,如果启动太快没反应,可以重启时反复快速按键,直到看到类似下面的界面:
CentOS Linux (7.9.2009) Core
CentOS Linux (7.9.2009) Core (recovery mode)
CentOS Linux (7.9.2009) Core (救援模式)
选择第一个正常启动的选项(不带“recovery mode”或“救援模式”),按 e 进入编辑模式。
编辑内核启动参数
在选中行(以 linux16 或 linuxefi 开头)的末尾,找到 ro(只读模式),将其修改为 rw(读写模式),并添加 init=/bin/bash(以单用户模式启动)。
修改前示例:
linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=UUID=xxx ro crashkernel=auto rd.lvm.lv=centos/root rhgb quiet
修改后(添加 rw init=/bin/bash):
linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=UUID=xxx rw init=/bin/bash crashkernel=auto rd.lvm.lv=centos/root rhgb quiet
注意:UUID=xxx 是系统的唯一标识,无需修改,直接在 ro 后添加参数即可。
启动单用户模式
编辑完成后,按 Ctrl+X 或 F10 启动系统,此时会进入一个命令行界面(没有登录提示),直接以root权限进入单用户模式。
修改用户密码(或找回用户名)
- 如果记得用户名,忘记密码:直接执行
passwd 用户名(passwd root),按提示输入新密码(输入时不会显示字符),确认后即可完成修改。 - 如果连用户名都忘了:先查看系统所有用户列表,执行
cat /etc/passwd,输出格式为用户名:密码:x:UID:GID:描述:家目录:Shell,找到非系统用户(UID≥1000,且Shell为/bin/bash),centos:x:1000:1000::/home/centos:/bin/bash,这里的centos就是用户名。
重启系统
密码修改完成后,执行以下命令正常重启:
sync # 同步文件系统(防止数据丢失)
exec /sbin/init # 或执行 reboot
重启后,即可用新密码登录系统。
方法二:急救模式(Rescue Mode)——Grub引导失败时的备选
如果Grub菜单无法编辑(如被保护、或界面不显示),可通过CentOS 7的急救模式(Rescue Mode)解决。前提:有CentOS 7安装镜像(ISO文件)。
操作步骤:
用安装镜像启动虚拟机
在虚拟机设置中,挂载CentOS 7 ISO镜像文件,然后重启虚拟机,从光盘启动(启动时按 ESC 进入Boot Menu,选择光驱启动)。
进入安装界面,选择急救模式
进入安装界面后,按 Tab 键或方向键选择 “Troubleshooting” → “Rescue a CentOS Linux system”,按 Enter 进入急救模式。
配置网络(可选)
如果需要远程操作,可配置网络:选择 “Network settings” → “Enable”,按 Enter 启用网络(后续可通过SSH连接操作)。
挂载原系统根目录
系统会自动尝试挂载原系统的根目录到 /mnt/sysimage,如果挂载失败,可手动执行:
mount /dev/sda1 /mnt/sysimage # /dev/sda1 是原系统根分区,可通过 fdisk -l 查看
修改密码或找回用户名
- 修改密码:执行
chroot /mnt/sysimage切换到原系统环境,然后按方法一的步骤修改密码(passwd 用户名)。 - 找回用户名:同样执行
chroot /mnt/sysimage,cat /etc/passwd查看用户列表。
重启系统
完成后执行 exit 退出chroot环境,reboot 移除安装介质,正常启动即可。
方法三:通过挂载磁盘直接修改密码(适用于虚拟机文件系统可访问)
如果虚拟机文件系统能通过其他主机访问(如将虚拟机磁盘挂载到物理机),可直接修改密码文件,无需进入系统。前提:能将虚拟机磁盘(.vmdk/.vdi等)挂载到其他Linux系统。
操作步骤:
挂载虚拟机磁盘
将虚拟机关机,导出磁盘文件(如 centos7.vmdk),挂载到物理机的Linux系统(需安装 qemu-nbd 工具):
modprobe nbd
qemu-nbd -c /dev/nbd0 /path/to/centos7.vmdk
mount /dev/nbd0p1 /mnt # /dev/nbd0p1 是根分区,通过 fdisk -l 确认
修改密码文件
进入挂载目录,修改shadow文件(存储密码)或passwd文件:
- 修改root密码:编辑
/mnt/etc/shadow,找到root行,将第二个字段(密码哈希值)改为空(root::...),表示无密码登录。 - 修改其他用户密码:同样方法,将目标用户的密码哈希值置空。
- 找回用户名:查看
/mnt/etc/passwd,按方法一的方式查找用户。
卸载并重启
修改完成后,卸载磁盘:
umount /mnt
qemu-nbd -d /dev/nbd0
将磁盘文件重新导入虚拟机,启动即可用无密码(或新密码)登录。
注意事项与预防措施
- Grub按键差异:不同虚拟机(VMware、VirtualBox、KVM)进入Grub的按键可能不同,常见
ESC、Shift、Ctrl+C,可提前在虚拟机设置中查看启动选项。 - 文件系统权限:单用户模式下,根目录可能是只读的,需先执行
mount -o remount,rw /挂载为读写模式,否则passwd命令会报错。 - 预防遗忘:建议为常用用户设置简单密码,或使用密码管理工具记录;若需高安全,可设置SSH密钥登录,避免依赖密码。
忘记CentOS 7虚拟机的用户名和密码虽然麻烦,但通过Grub引导修改、急救模式或磁盘挂载3种方法,都能快速解决。Grub引导修改 是最推荐的首选方法,无需额外工具,成功率最高;若Grub无法操作,再考虑急救模式或磁盘挂载,日常使用中,养成良好的密码管理习惯,能有效避免此类问题的发生。


