重置ESXi默认密码的最佳方法

任何安装ESXi的用户都必须设置root密码,但是如果ESXi的默认密码被遗忘或丢失,用户和管理员无法更改。从安全的角度来看,这种方法可能不是最好的选择,但有时候是不可避免的。

当一个ESXi服务器被设置和配置好,一切都正常运行时,系统管理员可能很长一段时间都不登录ESXi服务器。ESXi主机有时候会在停电或其他问题后重新启动。但是,如果您不打算从ESXi控制台重新启动ESXi主机,则不需要密码。但是在某些时候,系统管理员可能想要对ESXi服务器的配置进行一些更改。他们尝试输入需要登录并重新配置服务器的root密码,结果发现密码被遗忘了。

在这种情况下,您如何登录到ESXi服务器?重新安装ESXi不是一个好的解决方案,因为从头开始创建新的配置以及创建和配置虚拟机需要很多工作。

ESXi有默认密码吗?如何在不重新安装服务器的情况下重置ESXi的默认密码?保持冷静,这个问题的答案在这里。今天的博客文章将解释如何在服务器上重置root用户的ESXi密码,而无需重新安装ESXi。

首先应该提到的是,ESXi没有默认密码。只能通过一些技巧来更改或删除root用户的密码。让我们开始吧!

使用VMware主机配置文件恢复ESXi默认密码

VMware Host Profiles是一种企业级功能,可以帮助应用统一配置到多个ESXi主机上,简化部署大量ESXi主机的过程。因此,您可以避免手动配置每个主机。在vCenter中创建一个主机配置文件,并将配置文件应用到所有需要的ESXi主机上。此功能还可以帮助重置root用户的ESXi密码。

只有满足以下起始条件,才能使用VMware Host Profiles重置ESXi root密码:

  • ESXi主机由vCenter管理。
  • 您使用的是VMware Enterprise Plus许可证(Host Profiles是仅适用于vSphere的Enterprise Plus版本或更高版本的功能)。

本示例中有以下几台机器:

  • 密码丢失的ESXi服务器-192.168.101.211
  • 密码已知的ESXi服务器-192.168.101.215
  • vCenter服务器-192.168.101.103

使用的是VMware ESXi 6.7和vCenter Server Appliance 6.7。

逐步说明

  1. 通过在Web浏览器中输入vCenter服务器的IP地址,打开VMware vSphere Web Client(在本示例中使用HTML5 vSphere Web Client)。在这个示例中,https://192.168.101.103是必要的地址。
  2. 主机配置文件,你可以在快捷方式菜单中找到。
  3. 点击提取主机配置文件
  4. 在弹出屏幕上,选择您希望用作创建主机配置文件基础的 ESXi 主机。在本示例中,选择了192.168.101.215。点击下一步
  5. 输入新提取的配置文件的名称,例如,ESXi-password。如果需要,输入描述。点击完成
  6. 然后,在主机配置文件菜单中,选择您最近创建的主机配置文件(在本例中为ESXi-password)。右键单击创建的主机配置文件,并在上下文菜单中选择编辑主机配置文件
  7. 展开新助手窗口左侧窗格中的菜单,前往安全和服务 > 安全设置 > 安全 > 用户配置 > root
  8. 取消选中所有不必要的选项。
  9. 在下拉菜单中选择固定密码配置
  10. 为 root 输入新的 ESXi 密码(例如,ChangeMe_357),确认密码并点击保存

    注意:如果您从密码遗忘的 ESXi 中提取了主机配置文件,请在此步骤更改密码是必要的。如果您从密码已知的 ESXi 主机中提取了主机配置文件,则可以将密码保持不变。

  11. 编辑后,已保存ESXi 密码主机配置文件。
    确保要重置根密码的 ESXi 主机已启动。
  12. 前往主机配置文件,右键单击您之前编辑过的主机配置文件(ESXi-password),然后选择附加/分离主机和群集
  13. 选择您不知道 root 密码的 ESXi 主机(选中复选框)。在我们的案例中,这是 192.168.101.211。点击保存
  14. 将您恢复的ESXi主机置于维护模式 – 转到主机和集群,右键单击主机并在上下文菜单中单击维护模式 > 进入维护模式。在此之后,您的ESXi主机在Web界面中的图标将会改变。如果您要恢复密码的ESXi主机上有运行的虚拟机,请关闭所有运行的虚拟机或将运行的虚拟机迁移到vCenter中其他ESXi主机上,使用VMware vSphere客户端进行操作。

    注意:维护模式是一种特殊模式,必须在ESXi主机处于服务状态时使用,例如内存安装、软件更新、应用补丁等。进入维护模式并迁移或关闭虚拟机后,ESXi主机可以重新启动或关闭电源。

  15. 当需要恢复密码的 ESXi 主机处于维护模式时,转到主机配置文件,右键单击主机配置文件,然后选择补救
  16. 在出现的窗口中,通过选中复选框(在我们的情况下为 192.168.101.211)选择密码丢失的 ESXi 主机。
  17. 您可以单击预检查补救来检查目标主机。
  18. 最后,单击补救
  19. 成功补救后,退出维护模式(右键单击 ESXi 主机,然后选择退出维护模式)。
  20. 尝试使用在主机配置文件中设置的密码(在这种情况下,ChangeMe_357被设置为root用户的ESXi密码)登录ESXi主机控制台。

现在一切应该正常工作——root用户的ESXi密码已重置,可以访问ESXi主机。您现在可以为ESXi主机设置新的复杂密码。

在Active Directory中重置ESXi密码

如果您的vSphere没有Enterprise Plus许可证,没有理由感到沮丧。您可以通过使用不需要最高级许可证的Active Directory集成来重置忘记的ESXi默认密码。

VMware vSphere可以与通常用于用户和计算机集中管理的Active Directory集成。您可以将每个ESXi主机加入到Active Directory域中,然后使用在Active Directory域控制器上创建的帐户登录ESXi主机。由于为ESXi实现了PAM(可插拔认证模块)框架,因此可以在vSphere中利用Active Directory认证机制。这种功能可用于重置主机上root用户的ESXi密码。要使用此方法,ESXi主机必须由vCenter进行管理,并且您的库存中应该有一个Active Directory域控制器。

注意:在VMware ESXi设置中,应将域控制器的IP地址指定为DNS服务器,因为ESXi服务器必须能够解析域和域控制器的名称。正如您可能记得的那样,在ESXi服务器的网络设置中,DNS服务器的IP地址与现有域控制器的IP地址不同,您可以部署一个临时机器(物理或虚拟)作为活动目录域控制器(将在ESXi服务器的网络设置中定义的DNS服务器IP地址设置为域控制器的IP地址),将ESXi服务器连接到该临时域控制器,并加入域。

作为替代方法,如果您的环境中已配置了域控制器,您可以打开vSphere Client,选择需要重置密码的ESXi主机,转到配置选项卡,选择网络 > TCP/IP配置,并编辑或添加适当的现有域控制器的IP地址作为DNS服务器。

注意:您可以在关于VMware集群的电子书中了解如何部署域控制器。

让我们逐步考虑使用这种方法。当前示例中的输入数据如下:

  • 未知root密码的ESXi:192.168.101.211
  • vCenter:192.168.101.103
  • 域控制器:192.168.101.21

Active Directory域控制器(ADDC)在此示例中部署在Windows Server 2008 R2上。

逐步说明

Active Directory用户和计算机中的域控制器上创建一个名为esxi01的新用户。为此,请打开服务器管理器,转到角色 > Active Directory域服务 > Active Directory用户和计算机 > [您的域名] > 用户

  1. 点击操作 > 新建 > 用户,输入esxi01作为用户名。点击下一步。在我们的示例中,域名是domain.net
  2. 现在为这个esxi01用户设置密码,例如,ESXiDomain_777。此密码仅用于此演示示例,建议您在恢复ESXi主机的根访问权限后将密码更改为强大且唯一的密码。点击密码永不过期复选框。
  3. 点击下一步完成
    ;
  4. 现在您需要在您的活动目录域控制器上创建ESX Admins组。组名必须完全相同。成员属于ESX Admins全局安全组的用户在登录后自动获得ESXi主机的根权限。随后,您应将esxi01用户添加到该组中。出于安全原因,最好将您用于登录ESXi主机的用户添加到ESX Admins组中,而不是将用户添加到Domain Admins组中。
  5. 要创建新组,在Server Manager中转到Action > 新建 > 组。设置ESX Admins为如截图所示的组名。
  6. 创建ESX Admins组后,打开组属性,在成员选项卡中,点击添加按钮。输入您的ESXi用户账户的名称(在本例中为esxi01),然后点击检查名称。如果名称输入正确并且被下划线标记,则点击确定完成。
  7. 现在您拥有的esxi01用户是您活动目录域中ESX Admins组的成员。
  8. 是时候让无法记住根密码的ESXi服务器加入域了。在浏览器中打开vSphere HTML5 Web客户端。打开主机和集群
  9. 右键单击您的ESXi主机,切换到配置选项卡,然后在列表中选择身份验证服务。点击加入域按钮。
  10. 使用域管理员的凭据加入域。默认情况下,管理员域管理员组的成员。
  11. 当您的ESXi主机在域中时,使用VMware主机客户端登录到必须恢复根密码的ESXi主机。在浏览器中输入您的ESXi主机的IP地址。在我们的示例中,应输入https://192.168.101.211
  12. [email protected](您之前创建的Active Directory用户)作为用户名,并将在此用户的域控制器上设置的密码(在这种情况下应使用ESXi默认密码ESXiDomain_777)作为密码输入。
  13. 一旦您登录到忘记密码的ESXi主机,您可以重置root用户的密码。
  14. 转到管理>安全性&用户>用户,选择root并单击编辑图标。
  15. 为ESXi主机上的root设置一个新的、强大的和唯一的密码。尽量不要再次忘记密码!

一旦您重置了ESXi root密码,如果将来不再使用域进行ESXi身份验证,请让ESXi主机退出Active Directory域。

通过编辑/etc/shadow重置ESXi密码

如果您有一个独立主机,不受vCenter管理,则无法使用前两种方法恢复ESXi默认密码。几乎在所有情况下都可以使用此方法。

理论

密码不会以明文形式存储在ESXi系统文件中的任何位置。基本上,ESXi类似于Linux,将密码哈希存储在特殊的/etc/shadow系统文件中,只有root用户才能访问。在这种情况下,密码以加密形式出现。特殊的数学算法,如MD5、Blowfish、SHA-256、SHA-512等,用于将源密码转换为检查哈希值。用于计算哈希值的算法不向后兼容(只使用单向加密),因此无法进行逆向计算以获取原始密码。

让我们来考虑一个与root用户相关的字符串的示例:/etc/shadow

root:$1$xxxx$xxxxxxxx:13355:0:99999:7:::

这个字符串和/etc/shadow文件中的每个其他字符串都包含以下数据:

  • A user name (root);
  • A password hash that is recorded in the $id$salt$hashed format; where $id$ is the algorithm for calculating a hash sum ($1$ is MD5, $2a$ and $2y$ are Blowfish, $5$ is SHA-256, $6$ is SHA-512).
  • 最近的密码更改日期 – 自1970年1月1日以来的天数(13355);
  • 用户可以更改密码之前剩余的天数(0);
  • 用户必须更改密码之前剩余的天数(99999);
  • 密码到期之前的天数,在此期间必须通知用户(7);

字段用:(冒号)字符分隔。

当用户输入密码时,计算机内存中的输入密码会通过特殊算法转换为哈希值,然后将该哈希值与存储在/etc/shadow系统文件中的哈希进行比较。如果哈希值匹配,则用户经过身份验证,并在授权后获得适当的权限(这是身份验证后的下一个逻辑步骤)。

实践

首先,您应该准备一个Live DVD。在本示例中,将使用包括Ubuntu Live DVD选项的Ubuntu 18安装盘。从官方网站下载Ubuntu发行版的ISO镜像。您也可以使用其他您喜欢的发行版,例如Kali Linux、BackTrack、Debian、GParted Live CD等。

  1. 将ISO镜像刻录到DVD-R或DVD-RW介质上,或者将其写入可启动的USB闪存驱动器。
  2. 关闭或关闭您忘记密码的ESXi主机。
  3. 将Live DVD光盘插入DVD驱动器中,或将可引导的闪存卡/驱动器插入适当的插槽/端口,并从该驱动器引导。
  4. 点击试用而不安装Ubuntu引导选项(默认选中)。

  5. 打开Ubuntu终端(右键单击桌面,然后点击打开终端)。
  6. 获取root权限:
    sudo -i
  7. 列出安装ESXi的磁盘的分区。在我们的例子中,ESXi安装在一个单独的磁盘上,该磁盘使用默认的ESXi分区表进行分区:
    ls -al /dev/sd*
    fdisk -l | grep /dev/sda

    我们感兴趣的是存储/etc/shadow文件的/dev/sda5分区。
  8. 在从live DVD运行的Ubuntu的虚拟文件系统中创建临时目录。
    mkdir /mnt/sda5-esxi 

    这个目录将用于挂载存储/etc/shadow文件的分区。

  9. 我们还需要创建一个目录来存储临时文件:
    mkdir /temp
  10. sda5分区挂载到上面创建的/mnt/sda5-esxi目录:
    mount /dev/sda5 /mnt/sda5-esxi
  11. 验证在ESXi默认密码恢复框架中我们感兴趣的stage.tgz文件是否位于挂载的目录中:
    ls -al /mnt/sda5-esxi/state.tgz
  12. state.tgz归档中提取文件到我们的临时目录:
    tar -xf /mnt/sda5-esxi/state.tgz -C /temp/
  13. 已从state.tgz文件中提取local.tgz文件。一个归档中包含另一个归档。
  14. 让我们从local.tgz文件中提取文件:
    tar -xf /temp/local.tgz -C /temp/
  15. 可以现在从临时目录中删除local.tgz文件:
    rm /temp/local.tgz
  16. 在文本编辑器中打开/etc/shadow文件。我们将使用预先安装在Ubuntu中的vi
    vi /temp/etc/shadow
  17. 编辑此文件的内容。为了重置ESXi根密码,请编辑包含root的字符串。$6$表示正在使用SHA-512算法。密码哈希在上面的截图中用黄色标记。
  18. vi中,您可以通过按hljk然后按x来删除字符定位到所需字符。因此,与根用户相关的字符串应如下所示:
    root::13358:0:99999:7:::
  19. 保存更改并退出:
    :wq
  20. 转到/temp/目录:
    cd /temp
  21. 现在您需要将shadow文件重新添加到存档中。重新打包存档:
    tar -czf local.tgz etc
    tar -czf state.tgz local.tgz
  22. 将删除根密码的新存档移动到挂载到sda5分区的/mnt/sda5-esxi/目录的标准位置:
    mv state.tgz /mnt/sda5-esxi/
  23. /mnt/sda5-esxi/目录卸载/dev/sda5分区:
    umount /mnt/sda5-esxi
  24. 重新启动服务器并删除可引导的 DVD 或闪存介质:
    init 6
  25. 一旦您的ESXi服务器启动,按下F2键以查看身份验证屏幕。
  26. 将登录名保留为root,将密码字段留空。然后按Enter键。
    恭喜!您可以在不输入密码的情况下登录到ESXi服务器的控制台管理界面。
  27. 现在设置新的ESXi密码,并尽量记住这次的密码。您现在可以在ESXi主机上配置所需的一切。

通过替换state.tgz档案更改ESXi默认密码

这种方法与先前讨论的方法类似。如果您不想通过在Linux控制台中执行打包/解包存档和编辑/etc/shadow文件来重置ESXi默认密码,您可以只是将/etc/shadow文件从一个ESXi主机复制到另一个主机。

如果您有多个ESXi主机并且知道至少一个ESXi主机的密码,您可以将您知道密码的ESXi主机的/etc/shadow文件复制到您忘记密码的ESXi主机。如果您只有一个ESXi主机并且无法记住其ESXi root密码,您也可以使用此方法。在这种情况下,您应该在任何可用的hypervisor上部署一个运行ESXi的虚拟机,例如VMware Player或VMware Workstation。如果您有一台未使用的与ESXi兼容的物理计算机,您也可以使用该计算机。当前示例中使用的是在VMware Workstation上运行ESXi的VM。

简而言之,使用此方法重置ESXi默认密码的主要步骤如下:

  • 为运行在虚拟机上的ESXi设置新密码(例如,ChangeMe_567);
  • 从该虚拟ESXi复制/etc/shadow文件到您需要恢复访问的ESXi。您可以复制整个state.tgz存档;
  • 重新启动您的ESXi服务器,并使用您在虚拟ESXi主机上设置的密码(ChangeMe_567)。

逐步说明

让我们更详细地审查这种方法。

首先,在虚拟机上部署一个 VM 并安装 ESXi。ESX 的版本应与您的物理 ESXi 类似,必须恢复访问。例如,6.7 和 6.7,6.7 和 6.5,6.0 和 6.5 等。有关在虚拟机上安装 ESXi 的过程,请参阅我们的VMware Home Lab博客文章。您也可以阅读我们的交互式 ESXi 安装博客文章。

对已知密码的 ESXi 主机执行的操作

  1. 关闭运行 ESXi 的 VM,其根密码您知道。
  2. 将 Ubuntu 安装 ISO 镜像插入虚拟机的虚拟光驱。
  3. 启动虚拟机并从 Ubuntu ISO 镜像引导。在引导加载程序选项中选择试用 Ubuntu 而不安装
  4. 插入一个 USB 闪存驱动器并将其连接到虚拟机(USB 透传功能可帮助执行此操作)。
  5. 在 Ubuntu 桌面上,右键单击您的 USB 闪存驱动器图标,在上下文菜单中选择在终端中打开
  6. 在我们的情况下,USB 闪存驱动器的路径是/media/Ubuntu/USB16_STR
    在您的情况下,路径可能具有以下视图:/media/Ubuntu/[flash_name],其中[flash_name]也称为磁盘标签。
  7. 获取根权限:
    sudo su
  8. 检查ESXi磁盘驱动器的可用分区:
    fdisk -l | grep /dev/sda
  9. 在Ubuntu Live DVD的虚拟环境中创建一个目录以挂载必要的分区:
    mkdir /mnt/sda5-esxi
  10. 挂载包含state.tgz归档的分区,其中包含打包的shadow文件:
    mount /dev/sda5 /mnt/sda5-esxi/
  11. 将包含/etc/shadow文件的state.tgz归档复制到USB闪存驱动器(顺便说一句,当前目录由一个点表示):
    cp /mnt/sda5-esxi/state.tgz .
  12. 验证已经复制了state.tgz文件:
    ls -al
  13. 从先前创建的目录中卸载分区:
    umount /mnt/sda5-esxi/
  14. 关闭虚拟机:
    init 0
  15. 弹出现在已记录state.tgz文件的USB闪存驱动器,并将此USB闪存驱动器插入要重置ESXi根密码的ESXi服务器的USB端口。
  16. 将Ubuntu安装DVD光盘插入物理服务器的DVD驱动器中。如果您已经创建了可启动的闪存驱动器,则可以将其用作可启动媒体。

对密码丢失的ESXi主机执行的操作

  1. 关闭无法登录的ESXi服务器,并插入Ubuntu安装介质(将DVD光盘插入DVD驱动器或将USB闪存驱动器插入USB端口)。如果在此ESXi服务器上正在运行虚拟机,请在关闭超级管理程序之前不要忘记正确关闭虚拟机。
  2. 启动ESXi服务器,并从Ubuntu安装介质启动。
  3. 在引导加载器选项中选择不安装即可试用Ubuntu
  4. 一旦加载了Ubuntu Live DVD,请在Ubuntu桌面上右键单击USB闪存图标,然后选择在终端中打开
  5. 运行命令,类似于之前运行过的方式:
    sudo su
    fdisk -l | grep /dev/sda
    mkdir /mnt/sda5-esxi
    mount /dev/sda5 /mnt/sda5-esxi/
  6. 重命名包含未知ESXi根密码哈希值的原始state.tgz文件:
    mv /mnt/sda5-esxi/state.tgz /mnt/sda5-esxi/state-old.tgz
  7. 从USB闪存驱动器(这是当前目录)复制state.tgz文件到是state.tgz文件原始位置的目录:
    cp ./state.tgz /mnt/sda5-esxi
  8. 验证文件是否已复制(查看时间和日期以确保一切正常):
    ls -al /mnt/sda5-esxi/state.tgz
  9. 卸载之前挂载的磁盘分区:
    umount /mnt/sda5-esxi/
  10. 关闭服务器:
    init 0
  11. 弹出Ubuntu安装介质和您已复制state.tgz的USB闪存驱动器。
  12. 像往常一样打开您的ESXi主机电源。
  13. 使用您为在VM上运行的ESXi设置的root用户密码登录。

现在应该一切正常。一旦您已登录到ESXi控制台,请在ESXi密码设置中设置一个新的强密码,并不要忘记它。

结论

您无法将忘记的root密码重置为ESXi默认密码,因为ESXi root用户没有默认密码。选择用于更改忘记的ESXi密码的方法取决于几个因素 – 您的ESXi主机是否在vCenter中可访问,您是否拥有企业版Plus许可证,以及您是否拥有其他已知root密码的ESXi主机。了解所有四种方法几乎可以在所有情况下恢复对ESXi主机的访问。

无论您在ESXi主机上使用什么密码,都不要忘记备份您的虚拟机。备份虚拟机可以保护您的数据,节省时间和金钱。了解更多关于NAKIVO备份与复制的信息,并在您的虚拟环境中进行测试。

Source:
https://www.nakivo.com/blog/best-way-reset-esxi-default-password/