服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-09 更新于 2026-10-09 简米科技 3,467 字 8 分钟阅读

虚拟机忘记Linux密码怎么办?linux系统root密码找回方法

导读虚拟机忘记Linux密码时,不用重装系统,只需通过修改内核启动参数进入单用户模式,3步就能重置root密码并恢复管理员权限,Linux虚拟机root密码忘了怎么重置?先弄清原理忘记密码很正常,尤其是不常登录的虚拟机,半年没碰,密码早忘干净了,Linux账户密码并不存储在某个神秘角落,而是集中在 /etc/sha……

虚拟机忘记Linux密码时,不用重装系统,只需通过修改内核启动参数进入单用户模式,3步就能重置root密码并恢复管理员权限。

Linux虚拟机root密码忘了怎么重置?先弄清原理

忘记密码很正常,尤其是不常登录的虚拟机,半年没碰,密码早忘干净了,Linux账户密码并不存储在某个神秘角落,而是集中在 /etc/shadow 文件里,只有root能读写,所谓“重置密码”,本质就是找办法读写这个文件,然后执行passwd命令生成新密码。

为什么能绕过登录?因为虚拟机启动时,系统会提供一个临时控制权给GRUB引导程序,我们通过编辑GRUB启动参数,让内核跳过init进程,直接启动一个root shell,这时候系统还没有加载登录校验,谁都能拿到管理员权限,物理机也能这么做,但虚拟机更方便,因为虚拟化平台自带的显示控制台可以快速发送按键,不用接键盘。

虚拟机忘记Linux密码3步找回:单用户模式实操

第一步:重启虚拟机,抓住GRUB菜单

虚拟机开机速度很快,需要提前做好准备,在VMware或VirtualBox中,点击“重启客户机”后,立刻按住键盘Esc键(UEFI启动)或Shift键(BIOS启动),如果没赶上,就重新快照或强制关机再开一次。

进入GRUB界面后,停在一个多行菜单上,默认高亮第一个内核选项,别直接按回车,先按下 e 键,进入启动参数编辑模式。

第二步:往内核参数末尾追加 init=/bin/bash

编辑页面会显示磁盘信息、内核文件以及一堆启动参数,我们要找的是以 linux 开头的那一行,可能是linux16 /boot/vmlinuz-...,行末通常有rhgb quiet这样的参数,把光标移到这一行末尾,先打一个空格,然后加上:

init=/bin/bash(对CentOS/RHEL 7+和Ubuntu 18+都有效)

如果想用更现代的方式,也可以用 rd.break(这会直接进入一个带SELinux的临时环境),但init=/bin/bash更通用,麻烦少一些,输入完成后,按

虚拟机忘记Linux密码怎么办?linux系统root密码找回方法

Ctrl+X 或 F10 启动。

第三步:把根分区挂成可写,执行passwd重置root密码

启动后你看到的root shell,目前根文件系统是只读模式,直接改密码会报错,所以第一件事是把根分区重新挂载为可写:

mount -o remount,rw /

然后执行:

passwd root

系统会提示输入两次新密码,如果一切正常,会看到“passwd: all authentication tokens updated successfully。”

接下来还有一个关键动作:如果虚拟机启用了SELinux(CentOS、RHEL默认开启),重置密码后要执行:

touch /.autorelabel

这个命令会让系统下次启动时自动重新标记文件上下文,否则新密码可能被SELinux拦截,重启后root照样登录不上,最后执行 exec /sbin/init 或直接按电源键重启虚拟机,整个过程结束。

发行版 追加参数 SELinux处理
CentOS 7/8/9 init=/bin/bash touch /.autorelabel
RHEL 8/9 init=/bin/bash 或 rd.break 同上
Ubuntu 18/20/22 init=/bin/bash 一般不需要
Debian 10/11 init=/bin/bash 一般不需要

GRUB进不去?用救援模式重置Linux密码

如果GRUB菜单本身损坏,或者你给GRUB加了密码保护,单用户模式就进不去了,这时候还有一条路:救援模式(Rescue Mode)。

业内专家指出,救援模式是Linux安装程序的隐藏功能,它不会重装系统,而是把已有系统挂载到临时目录,让你修复问题。

具体操作步骤

  1. 先到官网下载一张对应的Linux安装镜像(比如CentOS Stream、Ubuntu Server ISO)。
  2. 在虚拟机的CD/DVD设置中挂载这个ISO,并把启动方式改为“光驱优先”。
  3. 重启虚拟机,从光盘启动后,选择Troubleshooting(问题排查)菜单。
  4. 进入后选

    虚拟机忘记Linux密码怎么办?linux系统root密码找回方法

    Rescue a CentOS system(不同发行版叫法略有不同)。

  5. 系统会自动检测已安装的Linux,并询问是否挂载,选择1继续。
  6. 挂载完成后,输入:
    chroot /mnt/sysimage

    这时候你就进入了原系统的root环境,执行passwd root重置密码,然后exit退出chroot,最后重启。

救援模式比单用户模式多两步,但胜在安全,尤其适合根分区文件系统损坏或者GRUB被篡改的情况。

两种方式怎么选?

  • 系统能正常启动到GRUB:优先单用户模式,操作快。
  • 系统卡死在GRUB或启动循环:救援模式更好,因为可以从外部检查磁盘。
  • 有洁癖不想动内核参数:救援模式不修改启动项,更干净。

云服务器Linux密码重置费用和操作差异

很多朋友问:云服务器忘记密码,自己又不会改,能不能找客服?要不要花钱?

这里分两种情况,如果你的云服务器能通过网页VNC(虚拟网络控制台)看到GRUB,那你按上面单用户模式操作,费用为零,VNC就是云平台帮你接管了显示器,跟本地虚拟机没有本质区别。

如果不能进GRUB,比如启动卡死,云厂商控制台一般提供“重置实例密码”功能,近年来,主流云平台(简米云、酷番云、华为云)都将这一项归类于基础安全运维操作,多数情况下免费,但请注意:重置密码后需要重启实例才能生效,而且如果系统内网卡或SSH配置有异常,重置也救不了,这时候若找工程师手动进救援模式,行业共识认为部分厂商会收取人工服务费,按次计价,金额因厂商和账号等级不同而异。

云服务器重置密码的推荐顺序

  • 先尝试VNC+GRUB单用户模式,熟练后10分钟搞定,完全不花钱。
  • 不要轻易让云厂商工程师操作,涉及数据安全,尽量自行处理。
  • 如果服务器已经无法进入单用户模式,但控制台有“重置系统”选项,慎用,那相当于重装系统,数据会清空。

重置密码后别着急重启,顺手做完这几个检查

虚拟机忘记Linux密码怎么办?linux系统root密码找回方法

重置成功不代表万事大吉,以下两个坑非常常见。

第一,检查/etc/shadow的权限,正常应该是640,如果你在救援模式里用chown乱改过,可能导致root也认不出文件,执行:

chmod 640 /etc/shadow
chmod 600 /etc/gshadow

第二,确认磁盘剩余空间,根分区如果100%占满,passwd写不进去也重启不了,用df -h /看一下,如果满,顺手清理下日志。

第三,如果你之前手贱改过/etc/pam.d/里面跟密码相关的配置,重置后的密码可能不满足安全策略,默认情况下passwd会强制要求8位以上且包含复杂度,嫌麻烦就在PAM配置里调低要求,但生产环境建议保留默认策略。

Q&A:虚拟机忘记linux密码怎么办?常见疑问

忘记Linux密码后,原来的数据还在吗?

数据都在,重置密码只改认证信息,相当于换了锁,不拆房子,前提是你没有误执行rm -rf /或者在救援模式里把磁盘挂载成了只读后强制写入,按上面的标准流程,业务数据、数据库、配置文件一个都不少。

linux虚拟机密码破解需要多久?

如果走单用户模式,从重启到登录成功大概5分钟,救援模式慢一些,因为要等ISO引导和chroot,大约10分钟,这比在网上找远程刷机服务快得多,更不用提重装系统动辄1小时。

重置密码后发现root无法登录,怎么办?

八成是SELinux的坑,回到单用户模式,执行touch /.autorelabel,然后重启,如果还不行,检查/etc/ssh/sshd_config里PermitRootLogin是否被设成了no,从VNC控制台用本机终端登录,应该能看到具体的报错信息,一步步排查即可。

最后收个尾:虚拟机忘记Linux密码不是世界末日,3步找回管理员权限完全可行。 优先单用户模式,不行就救援模式,云服务器就用VNC或控制台重置,这几条路基本覆盖所有场景,下次再遇到,深呼吸,按上面的顺序操作,密码很快就回来了。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱