重置 ESXi 默認密碼的最佳方法

任何安裝 ESXi 伺服器的使用者都必須設定 root 密碼,但如果忘記或遺失 ESXi 的預設密碼,使用者和管理員就無法更改。從安全角度來看,這種方法可能並非最佳,但有時是不可避免的。

當 ESXi 伺服器設置和配置完成,一切運作正常時,系統管理員可能很長一段時間都不需要登錄 ESXi 伺服器。在停電或其他問題後,有時可能會重新啟動 ESXi 主機。但是,如果您不打算從 ESXi 控制台重新啟動 ESXi 主機,則不需要密碼。但在某些時候,系統管理員可能想要對 ESXi 伺服器的配置進行一些更改。他們試圖輸入需要登錄並重新配置服務器的 root 密碼,卻發現密碼已經遺忘。

在這些情況下,您該如何登錄 ESXi 伺服器?重新安裝 ESXi 不是一個好的解決方案,因為從頭開始創建新配置以及創建和配置虛擬機需要大量的工作。

ESXi 是否有預設密碼?如何在不重新安裝伺服器的情況下重置 ESXi 的預設密碼?保持冷靜,這個問題的答案在這裡。今天的部落格文章將解釋如何在不重新安裝 ESXi 的情況下重置伺服器上 root 使用者的密碼。

首先應該提到的是,ESXi 沒有預設密碼。只能通過一些技巧來更改或移除 root 使用者的密碼。讓我們開始吧!

使用 VMware 主機配置檔恢復 ESXi 的預設密碼

VMware Host Profiles 是一項企業級功能,可幫助為多個 ESXi 主機應用統一配置,並簡化部署大量 ESXi 主機的過程。因此,您可以避免手動配置每個主機。創建主機配置文件並將其應用到 vCenter 中所有需要的 ESXi 主機。此功能還可以幫助重置 ESXi 根用戶的密碼。

如果滿足以下初始條件,則可以使用 VMware Host Profiles 重置您的 ESXi 根密碼:

  • ESXi 主機由 vCenter 管理。
  • 您使用 VMware Enterprise Plus 許可證(Host Profiles 是一項僅適用於 Enterprise Plus 版本或更高版本的 vSphere 的功能)。

當前示例中的以下機器:

  • 密碼丟失的 ESXi 服務器 – 192.168.101.211
  • 密碼已知的 ESXi 服務器 – 192.168.101.215
  • vCenter Server – 192.168.101.103

使用 VMware ESXi 6.7 和 vCenter Server Appliance 6.7。

分步說明

  1. 通過在網絡瀏覽器中輸入 vCenter Server 的 IP 地址來打開 VMware vSphere Web Client(在此情況下使用 HTML5 vSphere Web Client)。在本例中,https://192.168.101.103 是必需的地址。
  2. 前往主機配置檔案,您可以在快捷方式菜單中找到。
  3. 點擊提取主機配置檔案
  4. 在彈出屏幕上,選擇您希望用作創建主機配置檔案基礎的 ESXi 主機。在本示例中,已選擇 192.168.101.215。點擊下一步
  5. 輸入新提取的配置檔案的名稱,例如,ESXi 密碼。如有需要,輸入描述。點擊完成
  6. 然後,在主機配置檔案菜單中,選擇您最近創建的主機配置檔案(在本例中為ESXi 密碼)。右擊創建的主機配置檔案,在上下文菜單中選擇編輯主機配置檔案
  7. 打開新助手窗口左側窗格中的菜單,前往安全和服務 > 安全設置 > 安全 > 使用者設定 > root
  8. 取消所有不必要的選項。
  9. 在下拉選單中選擇固定密碼配置
  10. 輸入新的 ESXi 密碼(例如,ChangeMe_357)為 root,確認密碼並點擊保存

    注意:如果從一台已忘記密碼的 ESXi 中提取了主機配置文件,則在此步驟更改密碼是必要的。如果從已知密碼的 ESXi 主機中提取了主機配置文件,則可以將密碼保持不變。

  11. 編輯後已保存ESXi 密碼主機配置文件。
    確保需要重置 root 密碼的 ESXi 主機已開機。
  12. 前往主機設定檔,右鍵點擊您之前編輯過的主機設定檔(ESXi 密碼),並選擇附加/分離主機和叢集
  13. 選擇您不知道 root 密碼的 ESXi 主機(勾選核取方塊)。在我們的案例中,這是 192.168.101.211。按儲存
  14. 將您恢復的ESXi主機置於維護模式 – 轉至主機和叢集,右鍵單擊主機,在上下文菜單中單擊維護模式 > 進入維護模式。在web界面中,您的ESXi主機的圖標將在此後更改。如果在您要恢復密碼的ESXi主機上運行VM,請關閉所有運行中的VM或通過使用VMware vSphere Client將運行中的VM遷移到vCenter中的其他ESXi主機。

    注意: 維護模式是當主機正在運行服務時必須使用的特殊模式,比如內存安裝、軟件更新、應用補丁等。進入維護模式並遷移或關閉VM後,ESXi主機可重新啟動或關機。

  15. 当需要恢复密码的 ESXi 主机处于维护模式时,转到主机配置文件,右键单击主机配置文件,然后点击补救
  16. 在弹出的窗口中,通过选中复选框(我们的情况下为 192.168.101.211)选择密码丢失的 ESXi 主机。
  17. 您可以点击预检修复来检查目标主机。
  18. 最后,点击补救
  19. 成功补救后,退出维护模式(右键单击 ESXi 主机,然后选择退出维护模式)。
  20. 嘗試使用在主機配置文件中設置的密碼(ChangeMe_357在這種情況下被設置為root的ESXi密碼)登錄ESXi主機控制台作為root用戶。

現在一切應該正常工作 – 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此示例中部署的活動目錄域控制器(ADDC)運行在 Windows Server 2008 R2 上。

在此示例中,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. 現在您需要在您的Active Directory域控制器上創建ESX Admins群組。群組名稱必須完全相同。成員屬於ESX Admins全域安全群組的用戶在登錄後將自動獲得ESXi主機的root權限。稍後,您應該將esxi01用戶添加到這個群組中。出於安全考慮,最好將您用於登錄到ESXi主機的用戶添加到ESX Admins群組中,而不是將用戶添加到Domain Admins群組中。
  5. 要創建一個新群組,在Server Manager中轉到Action > New > Group。如截圖所示,將ESX Admins設置為群組名稱。
  6. 創建ESX Admins群組後,打開群組屬性,在成員標籤中,點擊添加按鈕。輸入您的ESXi用戶帳戶名(在這種情況下為esxi01)並點擊檢查名稱。如果名稱正確並且被下劃線劃出,點擊確定完成。
  7. 現在您有了成為您Active Directory域中esxi01用戶的ESX Admins群組成員。
  8. 該是時候讓你無法記住 root 密碼的 ESXi 伺服器加入域了。在瀏覽器中打開 vSphere HTML5 Web 客戶端。打開 主機和集群
  9. 右鍵單擊你的 ESXi 主機,切換到 配置 標籤,然後在列表中選擇 身份驗證服務 。點擊 加入域 按鈕。
  10. 使用域管理員的憑據加入域。默認情況下, 管理員 域管理員 群組的成員。
  11. 當你的 ESXi 主機在域中時,使用 VMware 主機客戶端登錄到必須恢復 root 密碼的 ESXi 主機。在瀏覽器中輸入你的 ESXi 主機的 IP 地址。在我們的示例中,應輸入 https://192.168.101.211
  12. 輸入 [email protected] (你之前創建的 Active Directory 用戶)作為用戶名,並使用在域控制器上為該用戶設置的密碼(在這種情況下,ESXiDomain_777 應作為 ESXi 的默認密碼)。
  13. 一旦您登录到忘记密码的ESXi主机,您可以重置root用户的密码。
  14. 前往管理 > 安全性与用户 > 用户,选择root并点击编辑图标。
  15. 为ESXi主机上的root设置一个新的、强大且唯一的密码。尽量不要再忘记密码!

一旦您重置了ESXi root密码,请让ESXi主机退出活动目录域,如果将来不会再用于ESXi身份验证。

通过编辑/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 年 1st1 日以來的天數(13355);
  • 用戶可以更改密碼之前剩餘的天數(0);
  • 用戶將被強制更改密碼之前剩餘的天數(99999);
  • 用戶必須被通知密碼到期之前剩餘的天數(7);

字段以冒號分隔。

當用戶輸入密碼時,計算機會使用特殊算法將輸入的密碼在記憶體中轉換為哈希總和,並將此哈希與存儲在/etc/shadow系統文件中的哈希進行比較。如果哈希匹配,則用戶經過驗證,並在授權後獲得適當的權限(這是驗證後的下一個邏輯步驟)。

實踐

首先,您應準備一個活動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. 將活動DVD光盤插入DVD驅動器,或將可啟動的閃存卡/驅動器插入適當的插槽/端口並從該驅動器啟動。
  4. 點擊嘗試不安裝Ubuntu啟動選項(默認選中)。
  5. 打開Ubuntu終端(右鍵單擊桌面並點擊打開終端)。
  6. 取得根權限:
    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密碼,編輯包含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 的虛擬機器。

簡而言之,使用此方法重置 ESXi 默認密碼的主要步驟如下:

  • 為在虛擬機器上運行的 ESXi 設置新密碼(例如,ChangeMe_567);
  • 從該虛擬 ESXi 複製 /etc/shadow 文件到您需要恢復訪問權限的 ESXi。您可以複製整個 state.tgz 存檔;
  • 重新啟動您的 ESXi 服務器並使用在虛擬 ESXi 主機上設置的密碼(ChangeMe_567)。

逐步說明

讓我們詳細介紹這種方法。

首先,部署一個虛擬機器並在該虛擬機器上安裝 ESXi。ESX 的版本應該與您的物理 ESXi 的版本類似,您需要恢復對其的訪問。例如,6.7 和 6.7、6.7 和 6.5、6.0 和 6.5 等。有關在虛擬機器上安裝 ESXi 的過程,可以參考我們的部落格文章,有關 VMware Home Lab 的介紹。您也可以閱讀我們關於互動式 ESXi 安裝的部落格文章。

在已知密碼的 ESXi 主機上執行的操作

  1. 關閉您知道 root 密碼的 ESXi 上運行的虛擬機。
  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 存檔和打包的影子文件的分區:
    mount /dev/sda5 /mnt/sda5-esxi/
  11. 將包含 state.tgz 存檔和 /etc/shadow 文件的存檔複製到 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 伺服器上運行 VM,請不要忘記在關閉超級管理員之前正確關閉 VM。
  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. 使用您為在虛擬機上運行的ESXi設定的root使用者的密碼登錄。

現在應該一切正常。一旦您登錄到ESXi控制台,請在ESXi密碼設定中設置一個新的強密碼,並請不要忘記它。

結論

您無法將遺忘的root密碼重置為ESXi默認密碼,因為ESXi root使用者沒有默認密碼。選擇用於更改遺忘的ESXi密碼的方法取決於幾個因素 – 您的ESXi主機是否在vCenter中可訪問,您是否具有企業版授權,以及您是否有其他具有已知root密碼的ESXi主機。了解所有四種方法可以幾乎在所有情況下恢復對ESXi主機的訪問。

無論您在ESXi主機上使用什麼密碼,都不要忘記備份您的虛擬機。備份虛擬機可以保護您的數據,節省金錢和時間。了解更多關於NAKIVO備份與複製,並在您的虛擬環境中進行測試。

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