ESXi root 密码重置

admin
admin
admin
56
文章
2
评论
2020年3月23日15:39:10 评论 78 4894字阅读16分18秒

忘记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,仍然可以重设密码,但后两种方法有点冒险。特别是,谨慎使用最后一种方法,删除了任何系统用户,都会比较烦。

admin
  • 本文由 发表于 2020年3月23日15:39:10
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: