声明:本文参考https://www.top-password.com/knowledge/reset-esxi-root-password.html中提到的挂载Ubuntu Live CD来清除ESXi原有密码,使ESXi再启动时可以通过空密码登陆后台,然后重新设置密码。如果英文阅读没问题的可以直接去看原文。
官方KB中虽然说ESXi的root密码只能通过重新安装来重置,但还是有网友成功通过上面提到的办法来重置。
由于物理机操作和拍照比较麻烦,我用ESXi中嵌套安装的ESXi挂载Live CD做演示。
以最新的ESXi7.0 Update1和Ubuntu 20.04 Live CD为例。
假设现在我们忘记root密码,无法登陆后台或者ESXi网页端了。

关闭ESXi主机,插上Ubuntu Live CD启动盘(可以是光驱,U盘等),我这里是嵌套ESXi,直接挂载ISO。

开机进入BIOS设置,确保LIVE CD启动在ESXi(硬盘)之前。

选择Try Ubuntu。

系统加载完毕后,点选Show Applications(左下角)。

搜索并运行gparted。

在ESXi7中我们要找的分区应该是这个BOOTBANK1的/dev/sda5。

关闭GParted并运行Terminal。

运行下面这几行命令,将该分区挂载到/mnt。
sudo -s
mount /dev/sda5 /mnt
cd /mnt
ls
找到我们需要的state.tgz压缩包。

然后将压缩包复制到临时目录/tmp,解压,查找local.tgz压缩包。
cp state.tgz /tmp
cd /tmp
tar xzf state.tgz
ls
找到了local.tgz压缩包。

解压local.tgz进入etc目录,找到shadow文件。
tar xzf local.tgz
ls
cd etc
ls

使用vi或者nano编辑shadow文件,以nano为例。
nano shadow

删除root后面第一个冒号和第二个冒号之间的内容(保留2个冒号)。

在nano编辑器中,Ctrl+X退出,提示是否保存修改时Y。

然后回车(使用当前文件名)。

接下来我们退回到etc上级目录,将修改的文件反向的打包压缩并覆盖/mnt/挂载点里的内容,然后取消挂载。
cd ..
tar czf local.tgz etc
tar czf state.tgz local.tgz
cp state.tgz /mnt/
umount /mnt

这时候物理机可以关闭Ubuntu Live CD系统,并弹出光驱或者拔掉Live CD U盘,我这里在嵌套的ESXi虚拟机设置中把ISO文件停止挂载。

保存,开机,等待ESXi加载完成。

按F2,使用root空密码,回车。

成功,可以去设置新密码了。
