忘记ESXi root密码?不慌,这里有4种方法来重置。
密码是大家容易忘记的东西,ESXi的root密码也不例外。没有root密码,你将失去对主机的控制,所以知道如何重置ESXi root 密码很重要。本文将重点介绍如何重置ESXi root密码。
当发生这种情况时,会首先浏览一些官方KB,不幸的是,VMware建议重置密码的唯一方法是重新安装操作系统。如果不想重装系统怎么办?本文告诉你!
这篇文章使用的是ESXi 6.7.0(8169922),但是ESXi 6.X和ESXi 5.X同样适用,重置密码的方法非常危险,谨慎使用。
-
理论发现
在考虑过一些忘记密码的情况后,发现这两种情况最常见:
A.忘记ESXi root密码,但是可以通过vCenter 访问主机
B.忘记ESXi root密码,但是无法访问。
第二种看起来比较糟糕,本文将告诉你在这两种情况下如何重置密码。
-
通过vCenter更改密码
有这样一个场景:忘记ESXi root密码,但是安装了vCenter,这是一个很常见的问题,管理员通过vCenter管理主机,但是有一天他们忘记了主机密码,这个情况下恢复密码并不难。
首先,看一下如何通过flash vCenter Webclient更改密码,在这里,html模式并不适合。
备注:ESXi不能低于企业增强版。
为了重置密码,需要提取、编辑、上传主机配置文件。
跳转到vCenter,如下图提取主机配置文件
在提取时,指定主机名并输入一些必要的描述。
检查输入的信息并点击Finish。
在vCenter中,导航到“Home”选项卡,然后转到“Host Profiles”。
右键单击“Host Profiles”,编辑设置。
根据需要,指定新名称和描述。
更改名称和主机描述后,转到“Edit host profiles”选项卡。实际上,可以在此处更改许多设置,但我们只更改主机密码这一项。
现在,已经更改密码,将主机添加到集群中并应用设置。
在“Attach/Detach Hosts and Clusters”菜单中,选择要更改密码的主机。在这里要提一下,可以将更改应用到多台主机。
在添加主机后,如果需要可以更改网络设置,只要单击“Finish”即可应用设置。
需要将节点置于维护模式,否则无法应用任何设置。
确认将选定的主机置于维护模式。需要注意,除非可以暂时关闭虚拟机,否则需要迁移虚拟机。就我而言,主机上没有关键任务虚拟机,因此我只是预先关闭了它们的电源。
现在,回到“Object”选项卡,右键单击“Host Profiles”,选择“Remediate”
选择所需的主机。
验证所有设置,然后检查是否可以完全应用更改。点击“Finish”。
重启主机后,退出维护模式。
现在,可以检查一下密码是否重置成功,通过Web Client使用新密码登录ESXi主机。
-
通过使用Active Directory 和vCenter重置密码
可以使用Active Directory在vCenter中修改密码。如果将ESXi添加到域中,可以通过域用户登录到节点重置密码。
跳转到域控制器上的“AD Users andComputers”,创建一个新的工作组“ESXi Admins”。确保为工作组使用相同的名称,添加一个新用户,在后面要使用这个用户来重置密码。可以是任意用户,比如TestUser。
将忘记密码的主机添加到域中。
尝试使用TestUser来登录ESXi主机,格式为 User@Domain 或者Domain\User.
登录主机后,跳转到 “Security & users”选项卡,重置密码。
从现在开始,可以使用新密码。如果不需要主机在域中,可以将主机从域中踢出来。
应用更改,重启主机。
备注:使用vCenter更改密码非常容易,但是VMware出于某些原因不建议这样做。
-
在独立的ESXi主机上重置密码
现在,知道了如何在vCenter下重置ESXi密码,让我们来看一些棘手的情况。假设没有在主机上安装vCenter,也不想重装操作系统。那么,如何在本节点上重置密码?
如果不关闭主机,将无法避过ESXi的安全性去重置密码。这意味着,必须将每个虚拟机关机。
需要从CD镜像启动,在本文中使用UbuntuGNOME。
因此,需要从闪存盘启动,安装所需的ESXi数据存储,解压缩文件,然后编辑密码文件。将文件上传到初始目录,重新启动主机后,可以在不使用密码的情况下访问它。
-
编辑“shadow”文件
-
“shadow”文件是什么?
出于安全考虑,ESXi将密码加密在某些文件中……不管怎样,仍然可以通过以下方式重置密码。根据一些非官方消息来源,此文件称为“shadow”。可以在/ etc目录中的其中一个引导卷中找到它。在启动主机之前,/ etc在local.tgz中。这里是路径:/etc => local.tgz =>state.tgz.
在ESXi 6.0或更高版本中格式化磁盘的方法如下:
Volume name | What it is for? | Volume size in my case |
/dev/sda1 | Starts the system | 4 MB |
/dev/sda2: /scratch: | System volume that is created while installing ESXi on the over-5 GB disk. | 4 GB |
/dev/sda3: VMFS datastore: | Represents all the remaining disk space | |
/dev/sda5: /bootbank: | The ESXi image | 250 MB |
/dev/sda6: /altrbootbank: | The older system version image. You’ll see it as an empty volume if you have never updated the system | 250 MB |
/dev/sda7: vmkDiagnostic (the first volume) | Keeps the core dump | 110 MB |
/dev/sda8: /store | VMware Tools image | 286 MB |
/dev/sda9: vmkDiagnostic (the second volume) | Keeps all the information connected with vSAN diagnostics. You can observe this volume only in over-8 GB datastores | 2.5 GB |
在所有这些卷中,我们只需要/ bootbank一个即可,“shadow”应该在这里。
先从闪存盘启动主机,然后启动终端。
运行以下命令以获得root特权:
# sudo su
查看磁盘名称,找到所需的磁盘名称。
# fdisk –l | grep/dev/sda
看来需要250 MB / dev / sda5目录。创建mnt目录。
# mkdir /mnt/sda5
现在为临时文件创建目录。
# mkdir /temp
使用下面的命令挂载/ dev / sda5目录。
# mount /dev/sda5/mnt/sda5
找到上面所说的state.tgz
# ls -l /mnt/sda5/state.tgz
提取state.tgz和local.tgz。
# tar -xf/mnt/sda5/state.tgz –C /temp/
# tar -xf /temp/local.tgz –C/temp/
完成解压缩后,删除旧的:
# rm /temp/*.tgz
打开文件,对其进行编辑,然后将其关闭。就这么简单!要再次检查更改,请再次打开文件。
# vi /temp/etc/shadow
这就是“shadow”的内容,里面包含所有用户的密码
要重置密码,只需删除双冒号之间的所有内容。记住,所有内容都是加密的,这就是为什么密码看起来很奇怪的原因。
# vi /temp/etc/shadow
# cd /temp
将“shadow”文件添加回去
# tar -czf local.tgz etc
# tar -czf state.tgzlocal.tgz
将新的存档移动到初始目录。
# mv state.tgz/mnt/sda5/
卸载/ sda5磁盘:
# umount /mnt/sda5
重启主机
# reboot
这里列出了需要操作的所有命令。
立即重新启动服务器,然后尝试不使用任何密码访问主机。
选择Configure Password,键入新密码。
-
替换“shadow”
还有另一种使用“shadow”重置ESXi root密码的方法。实际上,这不过是上述方法的一种变体。因此,重置ESXi密码的另一件事就是使用另一个主机“shadow”文件!只需将具有已知root密码的另一台ESXi主机中的“shadow”文件复制到闪存盘中即可。要从其他主机获取带有密码的文件,需要WinSCP。可以使用已知的ESXi root密码从主机检索该文件,不需要关机。
接下来,使用Ubuntu GNOME调用终端并重置密码。
将用户权限更改为root权限:
# sudo su
看看磁盘上的内容。
# fdisk –l | grepsd
创建两个临时文件夹
# mkdir /mnt/sda5
# mkdir /mnt/sdb1
挂载“shadow”所在的ESXi磁盘和闪存磁盘。
# mount /dev/sda5 /mnt/sda5
# mount /dev/sdb1 /mnt/sdb1
创建临时文件
# mkdir /temp
创建文件夹以保存state.tgz副本
# mkdir /mnt/sdb1/save
找到必要的文件。
# ls -l/mnt/sda5/state.tgz
复制文件
# cp/mnt/sda5/state.tgz /mnt/sdb1/save
运行以下命令来检查文件是否已被复制
# ls -l /mnt/sdb1/save
使用命令提取state.tgz
# tar -xf/mnt/sda5/state.tgz –C /temp/
找到temp文件
# ls –l /temp
提取local.tgz.
# tar -xf/temp/local.tgz –C /temp/
确保提取了/etc文件
# ls –l /temp
删除local.tgz卷,以确保它不会包含在新存档中。
# rm /temp/local.tgz
在/etc中找到“shadow”文件
# ls -l /temp/etc
用已知密码的“shadow”文件替换现在的“shadow”文件
# cp /mnt/sdb1/shadow/temp/etc
# vi /temp/etc/shadow
如果不希望某些用户访问主机,可以将他们从清单中删除。在这里,我从可以访问主机的用户中删除了Test。为什么只删除Test?在这一点上,想提醒不要删除任何您不熟悉的用户。就我而言,除Test以外的所有用户都是系统用户。如果删除其中任何一个,则可能会使操作系统不稳定!
检查是否已应用所有更改。
# vi /temp/etc/shadow
跳到/temp
# cd /temp
# tar -czf local.tgzetc
检查归档是否运行顺利。
# ls -l /temp/
创建 state.tgz
# tar -czf state.tgzlocal.tgz
检查是否已创建
# ls -l /temp/
移动state.tgz
# mv state.tgz/mnt/sda5/
再检查一次结果。
# ls -l /mnt/sda5/
卸载sda5
# umount /mnt/sda5
重启主机
# reboot
如果一切正确,则可以使用已知密码访问主机。
如果主机在重新启动后开始表现异常,则仍然有初始文件的副本。可以同时安装/ sda5和/ sdb1并使用以下命令检索原始state.tgz,然后重试!
# cp/mnt/sdb1/save/state.tgz /mnt/sda5/
-
总结
讨论了四种重置ESXi主机root密码的方法。第一种方法是最简单的方法,如果安装了vCenter,它将非常有效。如果没有vCenter,仍然可以重设密码,但后两种方法有点冒险。特别是,谨慎使用最后一种方法,删除了任何系统用户,都会比较烦。
暂无评论内容