Wie man ein vergessenes Root-Passwort in ESXi 7.x und ESXi 8.x wiederherstellt
Wenn Sie das Root-Passwort für ESXi vergessen haben, empfiehlt VMware eine Neuinstallation von ESXi. In kleineren Umgebungen ohne automatisierte Bereitstellung und zentrale Profile müssen Sie alles manuell konfigurieren. Alternativ können Sie das Passwort auch auf inoffizielle Weise zurücksetzen. Wenn Sie ESXi über vCenter verwalten, können Sie das Passwort mit einem privilegierten Konto in vCenter zurücksetzen. Auch die Zugehörigkeit des ESXi-Hosts zu einer Active Directory-Domäne kann sehr hilfreich sein. Stehen diese Optionen nicht zur Verfügung, können Sie das Passwort eines eigenständigen Hosts nicht zurücksetzen, da das System den Passwort-Hash in einer verschlüsselten Konfigurationsdatei speichert, die ohne Root-Zugriff nicht entschlüsselt werden kann. Daher funktioniert die alte Methode, den Host von Linux zu starten und die Konfigurationsdatei direkt zu bearbeiten, ab ESXi 6.x nicht mehr.
Alternative Lösung mittels virtuellem Hosting
Die hier beschriebene Methode beinhaltet die Einrichtung eines zweiten (virtuellen) Hosts und die Übertragung des Schlüssels vom Haupthost auf diesen. Dadurch können Sie die Konfiguration extrahieren und den Passwort-Hash in der SQLite-Datenbank ändern. Dazu müssen Sie die Bootmedien sowohl des physischen als auch des virtuellen Hosts extern einbinden, da die Konfigurationsdatei nicht im laufenden Betrieb überschrieben werden kann und das System die Änderungen beim nächsten Neustart ablehnt. Ein Linux-System eignet sich für den Zugriff auf die ESXi-Konfiguration; die Verwendung einer Live-CD ist der einfachste Weg.
Installation eines virtuellen ESXi
Um die ESXi-Konfiguration eines physischen Hosts zu bearbeiten, benötigen Sie einen anderen ESXi-Host mit genau der gleichen Version, für den Sie das Passwort nicht vergessen haben.
Erstellen Sie eine neue virtuelle Maschine, wählen Sie „Andere“ als Gastbetriebssystem und anschließend die ESXi-Version aus, die Sie installieren möchten.
Gehen Sie anschließend zur Seite „Einstellungen anpassen“ und aktivieren Sie im Abschnitt „Virtuelle Hardware => CPU“ die Option „Hardwaregestützte Virtualisierung für das Gastbetriebssystem bereitstellen“.
Zum Schluss binden Sie die ESXi-Installations-ISO-Datei als DVD-Laufwerk ein und aktivieren die Option „Beim Einschalten verbinden“. Sie müssen diese Datei zuvor über „Speicher“ → „Datenspeicher-Browser“ → „Hochladen“ auf den ESXi-Host hochladen.
Erstelle eine Sicherungskopie von state.tgz
Im nächsten Schritt wird die Datei state.tgz auf dem physischen Host gesichert. Diese Datei speichert persistente Konfigurationsdaten, die der Host benötigt, um seinen Zustand beim nächsten Neustart wiederherzustellen.
Diese Datei enthält den Hash des vergessenen Passworts und den Schlüssel, der zum Verschlüsseln der darin enthaltenen Datei local.tgz verwendet wurde.
Wenn Sie den Host von USB gestartet haben (von VMware nicht empfohlen), trennen Sie ihn und schließen Sie ihn an einen Windows-Computer an. Wenn der Host von der internen Festplatte startet, starten Sie ihn über das externe Laufwerk in einer Linux-Umgebung und mounten Sie beispielsweise die FAT-formatierte Partition 6 unter /mnt.
mount /dev/sdb6 /mnt
Dann die Datei /mnt/bootbank/state.tgz auf eine lokale Festplatte (sofern beschreibbar) oder auf ein Netzlaufwerk mithilfe von Standard-Linux-Tools wie SCP-1811 Oder FTP Kopieren. Es wird außerdem empfohlen, eine Sicherungskopie dieser Datei anzufertigen.
Kopieren Sie state.tgz auf den virtuellen ESXi.
Kopieren Sie anschließend die Sicherungsdatei in das Verzeichnis /tmp Migrieren Sie den virtuellen ESXi-Host, zum Beispiel mit SCP-1811. Befindet sich die Datei auf einem Windows-Computer, könnte der Befehl folgendermaßen aussehen:
scp "C:\temp\state.tgz" [email protected]:/tmp/state.tgzسپس به دایرکتوری /tmp در هاست هدف بروید و فایل state.tgz را استخراج کنید:
tar -zxvf state.tgzوارد کردن کلید به state.tgz در ESXi مجازی
در مرحله بعد، فایل state.tgz مربوط به هاست مجازی را کپی، رمزگشایی و ویرایش میکنید تا کلید هاست فیزیکی را در آن جای دهید. برای این کار دستورات زیر را در shell هاست مجازی وارد کنید:
cp /bootbank/state.tgz /tmp/state.tgz
cd /tmp
tar -xzf state.tgz
rm state.tgz
vmtar -x local.tgz -o local.tar
tar -xf local.tar
rm local.tar
cp /tmp/encryption.info etc/vmware/
vmtar -c local.tar etc/vmware -o local.tgz
mv local.tgz state-mod.tgzاین دستورات فایل state.tgz رمزگذاری شده هاست مجازی را استخراج، رمزگشایی و بسته تنظیمات محلی (local.tgz) اصلاحشده ایجاد میکنند.

ویرایش فایل پیکربندی در هاست هدف
بعد، فایل /tmp/state-mod.tgz را به کامپیوتر خود کپی کنید:
scp [email protected]:/tmp/state-mod.tgz "C:\temp\state-mod.tgz"سپس هاست مجازی را خاموش کنید تا بتوانید درایو VMDK آن را آزاد کنید.
مونت کردن VMDK هاست هدف در یک VM لینوکس
اکنون فایل VMDK این VM را به یک VM لینوکس متصل کنید و آن را روشن کنید. در ترمینال سیستم مهمان دستور
fdisk -lباید دو پارتیشن bootbank شماره 5 و 6 را نمایش دهد.

انتقال state-mod.tgz به VM لینوکس و جایگزینی state.tgz
برای انتقال فایل state-mod.tgz که قبلاً ساختید، از کامپیوتر ویندوز (مسیر C:\temp) به ماشین لینوکس (دایرکتوری /home/thomas) با آدرس IP 10.0.7.140، میتوانید از دستور زیر در ترمینال یا پاورشل ویندوز استفاده کنید:
توضیحات:
scpابزار امن کپی فایل بین سیستمها است.[email protected]یعنی نام کاربریthomasروی ماشین لینوکس با آدرس IP مذکور./home/thomas/state-mod.tgzمسیر مقصد فایل در لینوکس است.
بعد از اجرای این دستور، سیستم از شما پسورد کاربر thomas را میپرسد و پس از وارد کردن آن، انتقال فایل آغاز میشود.
اگر در ویندوز از ترمینال معمولی استفاده میکنید و دستور scp شناسایی نمیشود، باید OpenSSH Client را نصب یا از ابزارهایی مانند PuTTY (pscp) استفاده کنید.
اگر خواستید میتوانم راهنمای استفاده از این ابزارها هم برایتان بنویسم.
scp "C:\temp\state-mod.tgz" [email protected]:/home/thomas/state-mod.tgzسپس پارتیشنهای bootbank را مانت کرده و فایل state.tgz را با state-mod.tgz جایگزین کنید:
sudo su
mkdir -p /bootbank1
mkdir -p /bootbank2
mount /dev/sdc5 /bootbank1
mount /dev/sdc6 /bootbank2
cp /home/thomas/state-mod.tgz /bootbank1/state.tgz
cp /home/thomas/state-mod.tgz /bootbank2/state.tgz
umount /bootbank1
umount /bootbank2سپس فایل VMDK را از VM لینوکس جدا کرده و هاست مجازی را دوباره راهاندازی کنید. حالا پیکربندی با کلید رمزگشایی شده هاست فیزیکی بارگذاری میشود.
در این مرحله، فایل state.tgz هاست فیزیکی که قبلاً کپی کردهاید را به دایرکتوری /tmp هاست مجازی منتقل کنید.
سپس فایل local.tgz.ve داخل آن را رمزگشایی کنید:
cd /tmp
cp /bootbank/state.tgz ./
tar -xzf state.tgz
rm state.tgz
vmtar -x local.tgz.ve -o local.tgzجایگزینی هش پسورد در پایگاه داده پیکربندی ESXi
اکنون کار اصلی یعنی جایگزینی هش پسورد را انجام دهید. ابتدا فایل local.tgz را استخراج کنید:
tar -zxvf local.tgzپس از استخراج، سه دایرکتوری .ssh، etc/ و var/ در /tmp خواهید داشت. پایگاه داده پیکربندی مربوطه در مسیر زیر است:
/tmp/var/lib/vmware/configstore/backup/current-store-1در این دیتابیس باید هش پسورد root فراموش شده را با هش جدیدی که میدانید جایگزین کنید. چون فایل یک پایگاه داده SQLite است، میتوانید با ابزار sqlite3 آن را ویرایش کنید. هش کنونی پسورد root را میتوانید با دستور زیر ببینید:
/usr/lib/vmware/sqlite/bin/sqlite3 /tmp/var/lib/vmware/configstore/backup/current-store-1 "select * from config where Component='esx' and ConfigGroup = 'authentication' and Name = 'user_accounts' and Identifier = 'root'"
برای تولید هش جدید، میتوانید از دستور زیر استفاده کنید:
openssl passwd -6یا از یک ژنراتور آنلاین استفاده کنید.
سپس هش جدید را به صورت زیر وارد دیتابیس کنید:
/usr/lib/vmware/sqlite/bin/sqlite3 /tmp/var/lib/vmware/configstore/backup/current-store-1 "update config set UserValue='"name":"root","password_hash":"$6$s6ic82Ik$ER28x38x.1umtnQ99Hx9z0ZBOHBEuPYneedI1ekK2cwe/jIpjDcBNUHWHw0LwuRYJWhL3L2ORX3I5wFxKmyki1","description":"Administrator"' where Component='esx' and ConfigGroup = 'authentication' and Name = 'user_accounts' and Identifier = 'root'"
بازسازی state.tgz برای هاست فیزیکی
بعد از جایگزینی هش پسورد، باید فایل state.tgz را دوباره از اجزای اصلی که در /tmp استخراج کردهاید، بازسازی کنید. فایل جدید شامل دیتابیس اصلاح شده خواهد بود:
vmtar -c etc .ssh var -o local.tgz
vmtar -c local.tgz -o local.tgz.ve
tar -czf state-recover.tgz local.tgz.veفایل state-recover.tgz را باید به VM لینوکس منتقل کنید. اگر ESXi روی یک USB نصب شده، میتوانید به سادگی آن را در VM لینوکس مانت کنید. اما اگر ESXi به صورت عادی از دیسک بوت میشود، هاست را از USB با توزیع لینوکسی مثل Ubuntu بوت کنید.
سپس همانند مرحله 5، پارتیشنها را مانت کنید و فایل state.tgz را با state-recover.tgz جایگزین کنید:
sudo su
mkdir -p /bootbank1
mkdir -p /bootbank2
mount /dev/sdb5 /bootbank1
mount /dev/sdb6 /bootbank2
cp /root/state-recover.tgz /bootbank1/state.tgz
cp /root/state-recover.tgz /bootbank2/state.tgz
umount /bootbank1
umount /bootbank2وقتی هاست فیزیکی با این پیکربندی جدید بوت شود، باید بتوانید دوباره با کاربر root وارد شوید.
نکته: اگر پسورد root هاست ESXi را فراموش کنید و نتوانید از طریق vCenter یا اکانت AD ریست کنید، تنها گزینه رسمی، نصب مجدد است. اما یک روش غیررسمی وجود دارد که با استفاده از هاست دوم، پیکربندی هاست اول را ویرایش میکند.









