忘了kali虚拟机登录密码,不用重装系统,在开机时修改grub启动参数进入单用户模式,就能用passwd命令重置密码,整个流程只需要几分钟。
kali虚拟机密码忘了怎么办?试试grub单用户模式
如果你用的是VMware或VirtualBox跑kali虚拟机,突然发现登录密码不对,先别急着格式化。Kali Linux默认的grub引导菜单中,有一个可以进入单用户模式的入口,通过它我们可以在不输入密码的情况下拿到root shell,然后重置任意账号的密码。
这个方法在大多数Linux发行版上都通用,Kali自然也不例外,唯一需要注意的是,如果你的磁盘启用了LUKS全盘加密,那在进入单用户模式之前需要先输入解密密码,这个密码忘了就真没辙了,好在多数虚拟机场景下默认不启用全盘加密,所以下面的步骤基本能走通。
重置前需要准备什么
- 一台能开机进入grub菜单的kali虚拟机
- 对虚拟机的键盘和鼠标控制权
- 耐心,仅此而已
进入grub编辑界面的时机
Kali虚拟机开机时,屏幕会先出现grub菜单,通常有一个倒计时等待。在倒计时结束前,用键盘上下键选中第一项“Kali GNU/Linux”,然后按字母e进入编辑模式。
如果你没来得及按,系统会直接进入登录界面,那就重启虚拟机再来一次,部分虚拟机开机会有bios自检画面,等它过去即可。
修改内核启动参数的关键一步
进入编辑界面后,你会看到一堆以set、load_video、menuentry开头的文本。用方向键翻到以linux开头的那一行,这一行很长,中间包含ro quiet splash之类的参数。
找到这一行的末尾,把光标移到最后,
敲一个空格,然后加上single,或者加init=/bin/bash,两者效果类似,这里推荐加single,因为后续操作更直观。
完成后,按Ctrl + X或者F10启动系统,你会看到屏幕滚动一堆文字,最后停留在一个root@kali的Shell提示符,这就是单用户模式。
kali虚拟机重置登录密码的具体操作步骤
现在你已经身处root shell了,但此时根文件系统可能是只读挂载的,直接用passwd命令会报错,所以第一步是重新挂载为可读写。
把根文件系统变成可写状态
在提示符下输入:
mount -o remount,rw /
这条命令把根分区重新以读写模式挂载,输入后没有任何提示就是成功,可以用mount命令检查一下,那一行有rw字样就对了。
用passwd命令重置root密码
接着重置root密码:
passwd root
系统会提示你输入两次新密码。注意Linux终端输入密码时不显示任何字符,是正常现象,别以为没按上。
输入完成后会提示passwd: password updated successfully,这时密码就重置好了。
处理普通用户密码也忘了的情况
如果你要重置的不是root,而是某个普通用户,比如kali,把命令改成:
passwd kali
这里kali是默认的非root用户名,如果连普通用户名都忘了,可以先查看一下:
cat /etc/passwd
里,行尾带/bin/bash的最后一列,通常就是可用登录账号。
重启虚拟机并验证新密码
密码重置完成后,输入:
exec /sbin/init
或者直接:
reboot -f
强制重启,等系统起来后,在登录界面输入刚才设置的新密码,就能顺利进入桌面了。
为什么重置以后还是提示密码错误?
有相当一部分人重置完密码,重启后依然报错,这通常是因为磁盘没有正确写回,单用户模式下,如果你用的是init=/bin/bash方式,系统没有正常挂载/proc和/sys,passwd命令可能写入到内存缓存的shadow文件但没落盘。
解决方案是,在输入passwd之前,先执行:
mount -o remount,rw /
并且确保没有其他分区挂在/etc上面,更稳妥的做法是重置完成后,先执行:
sync
把内存数据强制同步到磁盘,再重启。
另一种特殊情况:虚拟机快照导致密码回滚
如果你之前做过虚拟机快照,重置密码后重启,发现密码又变回旧的,那是因为恢复快照覆盖了磁盘改动,要么回到快照管理界面,放弃当前状态;要么重置密码后立即创建一个新快照,避免旧快照干扰。
如何避免下次再忘记密码
- 在虚拟机内用
passwd命令定期更新密码 - 把密码记录到本地密码管理工具,比如KeePassXC
- 养成备份虚拟机的习惯,VMware和VirtualBox都有快照功能,出问题秒回滚
如果grub菜单被隐藏了怎么办
有些kali虚拟机启动时直接进入登录界面,根本看不到grub菜单,这是因为系统设置里把grub超时时间设为了0。在开机时连续按Shift键,可以强制弹出grub菜单,这是Debian系系统的经典操作。
如果你按Shift没用,那就只能用启动U盘或安装镜像进入救援模式了。
用kali安装镜像启动,选择“Advanced options”或“Rescue mode”,同样能挂载根分区然后重置密码。
kali linux忘记root密码后的其他恢复思路
单用户模式并非唯一的路,如果你会使用chroot,也可以从live CD里直接修改目标系统的密码,思路是:
- 用另一个Linux系统启动虚拟机(可以用kali安装盘选“Live system”)
- 挂载原虚拟机的根分区到
/mnt - chroot进入该分区
- 执行
passwd root
不过这个方法比grub编辑要繁琐,grub单用户模式是最省事的方案,网上有相当一部分教程讲的是用init=/bin/bash直接进shell,其实和加single差不多,只是后续要手动执行很多东西。
行业共识认为,修改grub参数的方式适合大多数没有加密的Linux虚拟机,但如果你用的是云服务器或物理机,那就得依赖控制台或救援模式了。
关于kali虚拟机重置密码的常见问题
我的kali虚拟机用的是VirtualBox,步骤完全一样吗?
完全一样,VirtualBox和VMware只是虚拟化平台不同,操作系统层面没有区别,你只要能在虚机窗口里看到grub菜单,无论用哪个软件,操作和命令都是相同的。
重置密码会影响虚拟机里的文件和数据吗?
不会。passwd命令只修改认证信息,不触碰用户数据、配置文件、已安装的软件包,只要你的磁盘没有损坏,所有资料都会原样保留。
如果我把root密码和普通用户密码都忘了,还能重置吗?
能,只用root身份重置各自的密码即可,忘记所有密码时,进入单用户模式你就是root,可以直接对任意用户执行passwd命令,唯一需要注意的就是根文件系统要重新挂载为读写。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/614123.html





