重設 ESXi 預設密碼的最佳方法
任何安裝 ESXi 虛擬化平台的用戶都必須設定 root 密碼,但若密碼遺忘或遺失,一般用戶與管理員皆無法變更 ESXi 的預設密碼。從安全性角度來看,這種做法或許並非最佳方案,但有時卻在所難免。
當 ESXi 伺服器完成設定與配置,且一切運作正常時,系統管理員可能長時間不會登入該 ESXi 伺服器。 ESXi 主機有時會在停電或其他問題發生後重新啟動。不過,若您不打算透過 ESXi 主控台重新啟動主機,則無需輸入密碼。但到了某個時候,系統管理員可能需要變更 ESXi 伺服器的設定。當他們嘗試輸入登入並重新設定伺服器所需的 root 密碼時,卻發現自己已經忘記了密碼。
在這種情況下,該如何登入 ESXi 伺服器?重新安裝 ESXi 並非理想解決方案,因為從頭建立新配置以及建立和設定虛擬機器(VM)都需要耗費大量心力。
ESXi 有預設密碼嗎?如何在不重新安裝伺服器的情況下重設 ESXi 預設密碼?請保持冷靜,這個問題的答案就在這裡。 今天的部落格文章將說明如何在不重新安裝 ESXi 的情況下,重設伺服器上的 root使用者密碼。
首先必須說明的是,ESXi 並沒有預設密碼。只能透過某些技巧來變更或移除 root使用者的密碼。讓我們開始吧!
使用 VMware 主機設定檔恢復 ESXi 預設密碼
VMware 主機設定檔是一項 Enterprise 級特點,可協助為多個 ESXi 主機套用統一的設定,並簡化大量部署 ESXi 主機的流程。因此,您無需手動設定每台主機。 建立一個主機設定檔,並將該設定檔套用至 vCenter 中的所有所需 ESXi 主機。此特點亦可協助重設 ESXi 的 root使用者密碼。
若符合以下起始條件,即可使用 VMware 主機設定檔來重設您的 ESXi root使用者密碼:
- ESXi 主機由 vCenter 管理。
- 您使用的是 VMware Enterprise Plus 授權(主機設定檔是一項僅限於 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 裝置 6.7。
逐步說明
- 在網頁瀏覽器中輸入您的 vCenter Server IP 位址,以開啟 VMware vSphere Web Client(此處使用的是 HTML5 版 vSphere Web Client)。在此使用情境中,
https://192.168.101.103這是必要的地址。 - 前往
Host Profiles你可以在Shortcuts選單。
- 點擊
Extract Host Profile.
- 在彈出視窗中,選取您欲作為建立主機設定檔基礎的 ESXi 主機。在此範例中,已選取 192.168.101.215。按下
Next.
- 請輸入新提取的設定檔名稱,例如:
ESXi-password. 如有需要,請輸入說明。按下Finish.
- 接著,在
Host Profiles在選單中,選取您最近建立的主機設定檔(ESXi-password(在此情況下)。右鍵點擊已建立的主機設定檔,然後選擇Edit Host Profile在右鍵選單中。
- 展開新助理視窗左側窗格中的選單,然後前往
Security and Services > Security Settings > Security > User Configuration > root. - 取消勾選所有不必要的選項。
- 選擇
Fixed password configuration在下拉式選單中。 -
請輸入新的 ESXi 密碼(例如,
ChangeMe_357) 輸入 root 密碼,確認密碼,然後按下Save.註: 如果您從密碼已遺忘的 ESXi 主機擷取了主機設定檔,則必須在此步驟變更密碼。如果您從密碼已知的主機擷取了主機設定檔,則可保留原密碼不變。

- 該
ESXi-password編輯後已儲存主機設定檔。
請確認需要重設 root 密碼的 ESXi 主機已開機。 - 前往
Host Profiles,然後右鍵點擊您先前版本的主機設定檔(ESXi-password) 並選擇Attach/Detach Hosts and Clusters.
- 選取您不知道其 root 密碼的 ESXi 主機(勾選核取方塊)。在本例中,該主機為 192.168.101.211。按下
Save.
-
將已恢復的 ESXi 主機設為維護模式 – 前往
Hosts and Clusters, 右鍵點擊主機,然後在快顯功能表中點擊Maintenance Mode > Enter Maintenance Mode. 完成後,ESXi 主機的圖示將在網頁介面中變更。若該 ESXi 主機上正在執行虛擬機器,且您打算恢復其密碼,請關閉所有正在執行的虛擬機器,或使用 VMware vSphere Client 將正在執行的虛擬機器遷移至 vCenter 內的其他 ESXi 主機。註: 維護模式是一種特殊模式,必須在 ESXi 主機處於運行狀態時使用,例如進行記憶體安裝、軟體更新、套用修補程式等。進入維護模式並遷移或關閉虛擬機器後,即可重新啟動或關閉 ESXi 主機。

- 當需要恢復密碼的 ESXi 主機處於維護模式時,請前往
Host Profiles, 右鍵點擊主機設定檔並按下Remediate.
- 在彈出的視窗中,請勾選該 ESXi 主機的核取方塊(本例中為 192.168.101.211),該主機的密碼已遺失。
- 您可以點擊
Pre-check remediation以檢查目標主機。 - 最後,請點擊
Remediate.
- 修復成功後,請退出維護模式(右鍵點擊 ESXi 主機,然後選擇
Exit Maintenance Mode). - 請嘗試以 root 身分,使用您在主機設定檔中設定的密碼登入 ESXi 主機主控台(
ChangeMe_357(在此情況下,該密碼已被設定為 root 的 ESXi 密碼)。
現在一切應該都已恢復正常運作——root 的 ESXi 密碼已重設,且對 ESXi 主機的存取權限也已恢復。您現在可以為您的 ESXi 主機設定一個新的複雜密碼。
Active Directory 中的 ESXi 密碼還原
如果您沒有 vSphere 的 Enterprise Plus 授權,也無需感到沮喪。您可以透過以下方式重設忘記的 ESXi 預設密碼: 使用 Active Directory 整合 這不需要頂級授權。
VMware vSphere 可與 Active Directory 整合,後者通常用於集中管理使用者和電腦。您可以將每個 ESXi 主機加入 Active Directory 網域,然後使用在 Active Directory 網域控制器上建立的帳戶登入 ESXi 主機。 得益於 ESXi 對 PAM(可插拔驗證模組)框架的實作,vSphere 得以運用 Active Directory 驗證機制。此功能可用於重設主機上 root使用者的 ESXi 密碼。若要使用此方法,ESXi 主機必須由 vCenter 管理,且您的清單中應包含 Active Directory 網域控制器。
註:在 VMware 中 ESXi settings 應將網域控制器的 IP 位址指定為 DNS 伺服器,因為 ESXi 伺服器必須能夠解析網域名稱和網域控制器名稱。 您可能還記得,ESXi 伺服器網路設定中的 DNS 伺服器 IP 位址與現有網域控制器的 IP 位址不同。您可以部署一台臨時機器(實體或虛擬)作為 Active Directory 網域控制器(將 ESXi 伺服器設定中定義的 DNS 伺服器 IP 位址設為網域控制器的 IP 位址),將 ESXi 伺服器連接到該臨時網域控制器,並加入網域。
另一種方法是,若您的環境中已配置好網域控制器,您可以開啟 vSphere Client,選取需要重設密碼的 ESXi 主機,前往 Configure 選單頁籤,選擇 Networking > TCP/IP configuration 並編輯或新增適當的現有網域控制站之 IP 位址作為 DNS 伺服器。

註: 您可以在 關於 VMware 叢集的電子書.
讓我們一步一步來探討如何使用此方法。本範例中的輸入資料如下:
- ESXi 系統,根密碼未知:192.168.101.211
- vCenter:192.168.101.103
- 網域控制器:192.168.101.21
在此範例中,Active Directory 網域控制器 (ADDC) 部署於 Windows Server 2008 R2 上。
逐步說明
建立一個新使用者,其名稱例如為: esxi01 在網域控制器上的 Active Directory Users and Computers. 為此,請開啟 Server Manager, 前往 Roles > Active Directory Domain Services > Active Directory Users and Computers > [your domain name] > Users.
- 點擊
Action > New > User並按下esxi01作為使用者名稱。按下Next. 在我們的範例中,網域名稱是domain.net.
- 現在請為此設定密碼
esxi01例如,使用者,ESXiDomain_777. 此密碼僅作為本示範的範例,建議您在恢復 ESXi 主機的 root 存取權限後,將密碼變更為強效且唯一的密碼。點擊Password never expires核取方塊。 - 點擊
Next以及Finish.

- 現在您必須建立
ESX Admins群組於您的 Active Directory 網域控制器上。群組名稱必須完全相同。身為該群組成員的用戶ESX Adminsglobal security 群組在登入 ESXi 主機後會自動獲得 root 權限。之後,您應將esxi01將使用者加入此群組。建議將您用於登入 ESXi 主機的使用者加入ESX Admins群組,而不是將該使用者加入Domain Admins基於安全考量,將其加入群組。 - 若要建立一個新群組,請在
Server Manager前往 <strong>Action > New > Group. 設定ESX Admins如螢幕截圖所示,作為群組名稱。
- 建立完
ESX Admins群組,開啟群組屬性,並在Members分頁,點擊Add按鈕。輸入您的 ESXi 使用者帳戶名稱 (esxi01(在此情況下)並按下Check Names. 如果名稱輸入正確且下方有底線,請按下OK完成。
- 現在你已經有了
esxi01屬於該群組的用戶ESX Admins您 Active Directory 網域中的群組。 - 現在是時候讓那台您已忘記 root 密碼的 ESXi 伺服器加入網域了。請在瀏覽器中開啟 vSphere HTML5 Web Client。開啟
Hosts and Clusters. - 右鍵點擊您的 ESXi 主機,切換至
Configure按一下"標籤"頁,然後選取Authentication Services在清單中。點擊Join Domain按鈕。
- 請使用網域管理員的憑證加入網域。預設情況下,
Administrator是該組織的成員Domain Admins群組。
- 當您的 ESXi 主機位於網域中時,請使用 VMware 主機客戶端登入需要恢復 root 密碼的 ESXi 主機。在瀏覽器中輸入您的 ESXi 主機的 IP 位址。在本範例中,
https://192.168.101.211應輸入。 - 輸入
esxi01@domain.net(您先前建立的 Active Directory 使用者) 作為使用者名稱,以及在網域控制器上為此使用者設定的密碼 (ESXiDomain_777(在此使用情境下,應將其設為 ESXi 的預設密碼)。
- 一旦您登入到忘記密碼的 ESXi 主機,即可重設 root使用者的密碼。
- 前往
Manage > Security & Users > Users, 選擇root然後點擊edit圖示。 - 請為 ESXi 主機的 root 帳戶設定一個全新、強效且獨特的 ESXi 密碼。請務必記住這個密碼,別再忘記了!

重設 ESXi 根密碼後,請讓 ESXi 主機退出 Active Directory 若該網域未來不會用於 ESXi 驗證,請移除該網域。
透過編輯 /etc/shadow 重設 ESXi 密碼
如果您擁有一個未由 vCenter 管理的主機,則無法使用前兩種方法來恢復 ESXi 的預設密碼。此方法幾乎適用於所有使用情境。
理論
密碼在 ESXi 系統檔案中任何地方都不會以明文形式儲存。基本上,ESXi 與 Linux 類似,會將密碼雜湊值儲存於一個特殊的 /etc/shadow 僅限 root使用者存取的系統檔案。在此情況下,密碼會以加密形式呈現。系統會使用 MD5、Blowfish、SHA-256、SHA-512 等特殊數學演算法,將原始密碼轉換為校驗雜湊值。用於計算雜湊值的演算法不具向後相容性(採用單向加密),因此無法透過逆向計算來取得原始密碼。
讓我們以字串為例來探討 /etc/shadow 與 root 使用者相關的:
root:$1$xxxx$xxxxxxxx:13355:0:99999:7:::
這行字串以及該檔案中的所有其他字串 /etc/shadow 檔案包含以下資料:
- 使用者名稱 (root使用者);
- 記錄在
$id$salt$hashed格式;其中$id$是計算雜湊和的演算法($1$是 MD5,$2a$以及$2y$是河豚,$5$是 SHA-256,$6$是 SHA-512)。 - 最近一次更改密碼的日期 – 自上次更改密碼以來的天數st 1970年1月(13355);
- 距離使用者可以變更密碼還有多少天 (0);
- 距離使用者被迫變更密碼還剩多少天(99999);
- 在密碼到期前,系統必須通知使用者的天數(7);
這些欄位以 : (冒號) 字元。
當使用者輸入密碼時,輸入的密碼會在電腦記憶體中透過特殊演算法轉換為雜湊值,然後將此雜湊值與儲存於 /etc/shadow 系統檔案。若雜湊值相符,則表示使用者已通過驗證,並在授權後獲得相應的權限(這是驗證後的下一個邏輯步驟)。
練習
首先,您應準備一張 Live DVD。在此範例中,將使用包含 Ubuntu Live DVD 選項的 Ubuntu 18 安裝光碟。請從 官方網站. 您也可以使用其他您喜歡的發行版,例如, Kali Linux、BackTrack、Debian、GParted Live CD 等
- 將 ISO 映像檔燒錄至 DVD-R 或 DVD-RW 光碟,或製作可開機的 USB 隨身碟。
- 請關閉或關機您的 ESXi 主機(該主機的密碼已遺忘)。
- 將 Live DVD 光碟放入 DVD 光碟機,或將可開機的隨身碟插入適當的插槽或連接埠,並從該裝置開機。
- 點擊
Try without installingUbuntu 啟動選項(此為預設選項)。

- 開啟 Ubuntu 終端機(右鍵點擊
Desktop並點擊Open Terminal). - 取得 root 權限:
sudo -i - 列出安裝 ESXi 的磁碟上的分割區。在本範例中,ESXi 安裝在一個獨立的磁碟上,該磁碟是使用預設的 ESXi 分割區表進行分割的:
ls -al /dev/sd*
fdisk -l | grep /dev/sda

我們對/dev/sda5該分區位於/etc/shadow檔案所在的位置。 - 在由 Live DVD 啟動的 Ubuntu 所使用的虛擬檔案系統中建立臨時目錄。
mkdir /mnt/sda5-esxi. 此目錄將用於掛載包含該/etc/shadow檔案儲存的位置。 - 我們還需要建立一個目錄來存放暫存檔:
mkdir /temp - 安裝
sda5分區至/mnt/sda5-esxi上述建立的目錄:
mount /dev/sda5 /mnt/sda5-esxi - 請確認
stage.tgz在 ESXi 預設密碼還原的框架下,我們感興趣的檔案的位置位於已掛載的目錄中:
ls -al /mnt/sda5-esxi/state.tgz

- 從
state.tgz將檔案存檔至我們的暫存目錄:
tar -xf /mnt/sda5-esxi/state.tgz -C /temp/ - 該
local.tgz檔案已從state.tgz檔案。其中有一個檔案夾套在另一個檔案夾裡。 - 讓我們從
local.tgz檔案:
tar -xf /temp/local.tgz -C /temp/

- 該
local.tgz現在可以從暫存目錄中刪除該檔案:
rm /temp/local.tgz - 開啟
/etc/shadow在文字編輯器中開啟檔案。我們來使用vi這是預先安裝在 Ubuntu 中的:
vi /temp/etc/shadow

- 編輯此檔案的內容。若要重設 ESXi 根密碼,請編輯包含
root.$6$表示正在使用 SHA-512 演算法。上圖截圖中,密碼雜湊值以黃色標示。 - 刪除第一行與第二行之間的這段文字
:(冒號) 符號如下所示(您的情況下數字可能不同)。在vi您可以按下h,l,j,k然後按下x以刪除該字元。因此,您與 root使用者相關的字串應呈現如下:
root::13358:0:99999:7::: - 儲存變更並退出:
:wq

- 前往
/temp/目錄:
cd /temp - 現在您需要加入
shadow將檔案放回壓縮檔中。重新打包壓縮檔:
tar -czf local.tgz etc
tar -czf state.tgz local.tgz - 將包含已刪除根密碼的新存檔移至其位於標準位置
sda5掛載至該分區的/mnt/sda5-esxi/目錄:
mv state.tgz /mnt/sda5-esxi/ - 卸載
/dev/sda5從/mnt/sda5-esxi/目錄:
umount /mnt/sda5-esxi - 重新啟動伺服器,並取出可開機的 DVD 或快閃儲存裝置:
init 6 - ESXi 伺服器啟動後,請按下
F2以查看驗證畫面。

- 請將登入名稱保留為 root,並將密碼欄位留空。然後按下
Enter.
恭喜! 您現在可以無需密碼即可登入 ESXi 伺服器的控制台管理介面。 - 現在請設定新的 ESXi 密碼,並務必記住這次的密碼。現在您可以在 ESXi 主機上進行所有必要的設定。

透過替換 state.tgz 壓縮檔來變更 ESXi 預設密碼
此方法與先前討論的方法類似。若您不希望透過操作壓縮檔的封裝/解壓縮以及編輯 /etc/shadow 在 Linux 終端機中,您可以直接複製該 /etc/shadow 將檔案從一個 ESXi 主機複製到另一個 ESXi 主機。
如果您擁有多個 ESXi 主機,且知道其中至少一個 ESXi 主機的密碼,您只需將 /etc/shadow 將檔案從您知道密碼的 ESXi 主機,傳輸至您忘記密碼的 ESXi 主機。如果您只有一台 ESXi 主機,且無法記起其 ESXi root 密碼,也可以使用此方法。在這種情況下,您應在任何可用的虛擬化平台(例如)上部署一台運行 ESXi 的虛擬機器, VMware Player 或 VMware 工作站. 如果您有一台閒置且相容於 ESXi 的實體電腦,也可以使用該電腦。本範例中使用的是在 VMware 工作站上執行 ESXi 的虛擬機器。
簡而言之,使用此方法重設 ESXi 預設密碼的主要要點如下:
- 為在虛擬機器上執行的 ESXi 設定新密碼(例如,
ChangeMe_567); - 複製
/etc/shadow將該虛擬 ESXi 上的檔案複製到您的 ESXi,並必須先恢復對該 ESXi 的存取權限。您可以複製整個state.tgz檔案; - 重新啟動您的 ESXi 伺服器,並使用您在虛擬 ESXi 主機上設定的密碼 (
ChangeMe_567).
逐步說明
讓我們更詳細地檢視此方法。
首先,部署一台虛擬機器,並在該虛擬機器上安裝 ESXi。ESXi 的版本應與您需要恢復存取權限的實體 ESXi 版本相近。例如:6.7 與 6.7、6.7 與 6.5、6.0 與 6.5 等。關於在虛擬機器上安裝 ESXi 的流程,請參閱我們關於 VMware 家庭實驗室. 您也可以閱讀我們關於 互動式 ESXi 安裝.
在已知密碼的 ESXi 主機上執行的操作
- 請關閉您知道其 root 密碼的、正在執行 ESXi 的虛擬機器。
- 將 Ubuntu 安裝 ISO 映像檔插入虛擬機器的虛擬光碟機中。
- 啟動虛擬機器,並從 Ubuntu ISO 映像檔開機。選擇
Try Ubuntu without installing在開機載入器的選項中。 - 插入 USB 隨身碟,並將其連接到虛擬機器(USB 直通特點可協助完成此操作)。
- 在 Ubuntu 桌面上,右鍵點擊您的 USB 隨身碟圖示,然後在快顯選單中選擇
Open in Terminal.
- 在我們的情況下,USB 隨身碟的路徑是
/media/Ubuntu/USB16_STR.
在您的情況下,路徑可能包含以下內容:view: /media/Ubuntu/[flash_name];其中[flash_name]也稱為磁碟標籤。 - 取得 root 權限:
sudo su - 檢查 ESXi 磁碟機的可用分割區:
fdisk -l | grep /dev/sda - 在 Ubuntu Live DVD 所使用的虛擬環境中,建立一個目錄以掛載所需的分割區:
mkdir /mnt/sda5-esxi - 掛載包含該檔案的分區
state.tgz包含壓縮陰影檔案的壓縮檔:
mount /dev/sda5 /mnt/sda5-esxi/ - 複製
state.tgz檔案庫,其中包含/etc/shadow將檔案儲存至 USB 隨身碟(順帶一提,這裡是指您的當前目錄,並以一個點表示):
cp /mnt/sda5-esxi/state.tgz . - 請確認
state.tgz檔案已複製:
ls -al

- 從先前建立的目錄中卸載該分割區:
umount /mnt/sda5-esxi/ - 關閉虛擬機器:
init 0 - 請將 USB 隨身碟從
state.tgz檔案已成功儲存,請將此 USB 隨身碟插入您欲重設 ESXi 根密碼的 ESXi 伺服器的 USB 埠中。 - 將 Ubuntu 安裝 DVD 光碟放入實體伺服器的 DVD 光碟機中。如果您已建立可開機隨身碟,亦可將其用作開機媒體。
針對遺失密碼的 ESXi 主機所執行的操作
- 請關閉無法登入的 ESXi 伺服器電源,並插入 Ubuntu 安裝媒體(將 DVD 光碟放入 DVD 光碟機,或將 USB 隨身碟插入 USB 連接埠)。若此 ESXi 伺服器上正在執行虛擬機器,請務必在關閉超管理程式之前,先正確關閉這些虛擬機器。
- 開啟 ESXi 伺服器的電源,並從 Ubuntu 安裝媒體開機。
- 選擇
Try Ubuntu without installing在開機載入器的選項中。 - Ubuntu Live DVD 載入完成後,請在 Ubuntu 桌面上右鍵點擊 USB 隨身碟圖示,然後選擇
Open in Terminal. - 請按照先前執行的方式執行這些指令:
sudo su
fdisk -l | grep /dev/sda
mkdir /mnt/sda5-esxi
mount /dev/sda5 /mnt/sda5-esxi/ - 重新命名原始檔案
state.tgz包含未知 ESXi 根密碼雜湊值的檔案:
mv /mnt/sda5-esxi/state.tgz /mnt/sda5-esxi/state-old.tgz - 複製
state.tgz將檔案從 USB 隨身碟(此為您的當前目錄)複製到該檔案原始位置的目錄state.tgz檔案:
cp ./state.tgz /mnt/sda5-esxi - 請確認檔案已成功複製(請查看時間和日期以確保一切正常):
ls -al /mnt/sda5-esxi/state.tgz

- 卸載先前掛載的磁碟分割區:
umount /mnt/sda5-esxi/ - 關閉伺服器:
init 0 - 請取出 Ubuntu 安裝媒體以及您已將檔案複製到的 USB 隨身碟
state.tgz. - 請照常開啟您的 ESXi 主機。
- 請使用您為虛擬機器上運行的 ESXi 所設定的 root使用者密碼登入。
現在應該沒問題了。登入 ESXi 主控台後,請在 ESXi 密碼設定中設定一個新的強密碼,並務必牢記。
結論
您無法將遺忘的 root 密碼重設為 ESXi 預設密碼,因為 ESXi root使用者並無預設密碼。選擇哪種方法來變更遺忘的 ESXi 密碼,取決於幾個因素——您的 ESXi 主機是否可在 vCenter 中存取、您是否擁有 Enterprise Plus 授權,以及您是否還有其他已知 root 密碼的 ESXi 主機。只要掌握這四種方法,您幾乎在所有使用情境下都能恢復對 ESXi 主機的存取權限。
無論您在 ESXi 主機上使用何種密碼,都請務必備份您的虛擬機器。擁有虛擬機器備份不僅能保護您的資料,還能節省金錢與時間。了解更多關於 NAKIVO Backup & Replication 並在您的虛擬環境中進行測試。