CentOS 7虚拟机忘记用户名和密码?别慌!3种方法轻松找回

LEAF
CentOS 7虚拟机忘记用户名和密码无需焦虑,可通过3种方法轻松找回,具体包括进入单用户模式重置密码、通过救援模式修改用户信息,或利用虚拟机快照恢复(若已创建),这些操作无需重装系统,安全高效,能快速解决登录问题,确保虚拟机恢复正常使用。

在虚拟机使用过程中,偶尔会遇到“忘记用户名和密码”的尴尬情况——尤其是长时间未登录的CentOS 7系统,或多人共用虚拟机时,记不清登录信息是常有的事,别担心,CentOS 7作为主流Linux发行版,提供了多种“救急”方式帮你重置密码或找回用户名,本文将详细介绍3种实用方法,从最常用的Grub引导修改到急救模式,帮你快速恢复系统访问权限。

场景说明:为什么会出现忘记密码的情况?

在开始操作前,先简单梳理常见原因:

  • 新安装的CentOS 7虚拟机,设置密码后长时间未使用,遗忘登录信息;
  • 多人共用虚拟机,用户名或密码被误改/遗忘;
  • 为了安全测试,故意设置复杂密码后未记录。

无论哪种情况,只要掌握以下方法,都能轻松解决。

CentOS 7虚拟机忘记用户名和密码?别慌!3种方法轻松找回

方法一:Grub引导修改密码(最常用,成功率100%)

这是CentOS 7系统最经典的“救急”方式,通过在Grub启动菜单中进入单用户模式,绕过密码验证直接修改用户密码。前提:虚拟机能正常启动,且Grub菜单可见

操作步骤:

重启虚拟机,进入Grub启动界面

开机时,快速按下 ESC 键(部分虚拟机可能是 ShiftCtrl+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 进入编辑模式。

编辑内核启动参数

在选中行(以 linux16linuxefi 开头)的末尾,找到 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+XF10 启动系统,此时会进入一个命令行界面(没有登录提示),直接以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/sysimagecat /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  

将磁盘文件重新导入虚拟机,启动即可用无密码(或新密码)登录。

注意事项与预防措施

  1. Grub按键差异:不同虚拟机(VMware、VirtualBox、KVM)进入Grub的按键可能不同,常见 ESCShiftCtrl+C,可提前在虚拟机设置中查看启动选项。
  2. 文件系统权限:单用户模式下,根目录可能是只读的,需先执行 mount -o remount,rw / 挂载为读写模式,否则passwd命令会报错。
  3. 预防遗忘:建议为常用用户设置简单密码,或使用密码管理工具记录;若需高安全,可设置SSH密钥登录,避免依赖密码。

忘记CentOS 7虚拟机的用户名和密码虽然麻烦,但通过Grub引导修改、急救模式或磁盘挂载3种方法,都能快速解决。Grub引导修改 是最推荐的首选方法,无需额外工具,成功率最高;若Grub无法操作,再考虑急救模式或磁盘挂载,日常使用中,养成良好的密码管理习惯,能有效避免此类问题的发生。

文章版权声明:除非注明,否则均为XMSDN - MSDN原版系统镜像 | 纯净ISO系统下载原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码