Cómo recuperar una contraseña de root olvidada en ESXi 7.x y ESXi 8.x
Si olvida la contraseña root de ESXi, VMware recomienda reinstalar ESXi. En entornos pequeños que no cuentan con implementaciones automatizadas ni perfiles centrales, deberá configurar todo manualmente. Como alternativa, puede usar un método no oficial para restablecer la contraseña. Si administra ESXi a través de vCenter, puede restablecer la contraseña con una cuenta con privilegios en vCenter. Además, tener el host ESXi como miembro de un dominio de AD puede ser de gran ayuda. Si estas opciones no están disponibles, no podrá restablecer la contraseña de un host independiente, ya que el sistema almacena el hash de la contraseña en un archivo de configuración cifrado que no se puede descifrar sin acceso root. Por este motivo, el método anterior de arrancar el host desde Linux y editar directamente el archivo de configuración ya no funciona después de ESXi 6.x.
Solución alternativa mediante hosting virtual
El método implica configurar un segundo host (virtual) y transferirle la clave del host principal. Esto permite extraer la configuración y cambiar el hash de la contraseña en la base de datos SQLite. Para ello, es necesario montar externamente el medio de arranque de los hosts físicos y virtuales, ya que no se puede sobrescribir el archivo de configuración mientras el sistema está en ejecución y este rechazará los cambios en el siguiente arranque. Un sistema Linux es adecuado para acceder a la configuración de ESXi; usar un Live CD es la forma más sencilla.
Instalación de un ESXi virtual
Para editar la configuración ESXi de un host físico, necesita otro host ESXi con exactamente la misma versión cuya contraseña no haya olvidado.
Cree una nueva máquina virtual, seleccione Otro como sistema operativo invitado y seleccione la versión de ESXi que desea instalar.
Luego vaya a la página Personalizar configuración, en la sección Hardware virtual => CPU, habilite la opción Exponer virtualización asistida por hardware al sistema operativo invitado.
Finalmente, monte el archivo ISO de instalación de ESXi como una unidad de DVD y active la opción Conectar al encender. Primero debe cargar este archivo al host ESXi mediante Almacenamiento => Explorador de almacén de datos => Cargar.
Realizar una copia de seguridad de state.tgz
El siguiente paso es hacer una copia de seguridad del archivo state.tgz en el host físico. Este archivo almacena los datos de configuración persistentes que el host necesita para restaurar su estado en el siguiente arranque.
Este archivo contiene el hash de la contraseña olvidada y la clave utilizada para cifrar el archivo local.tgz dentro de él.
Si arrancó el host desde USB (no recomendado por VMware), desconéctelo y conéctelo a un equipo Windows. Si el host arranca desde el disco interno, inícielo en un entorno Linux a través de la unidad externa y monte la partición 6, con formato FAT, en /mnt, por ejemplo:
montar /dev/sdb6 /mnt
Luego el archivo /mnt/bootbank/estado.tgz a un disco local (si se puede escribir) o a una unidad de red utilizando herramientas estándar de Linux como SCP-1811 O FTP Copiar. También se recomienda hacer una copia de seguridad de este archivo.
Copiar state.tgz a ESXi virtual
A continuación, copie el archivo de respaldo al directorio /tmp Migrar un host ESXi virtual, por ejemplo con SCP-1811. Si el archivo está en una computadora con Windows, el comando podría verse así:
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 ریست کنید، تنها گزینه رسمی، نصب مجدد است. اما یک روش غیررسمی وجود دارد که با استفاده از هاست دوم، پیکربندی هاست اول را ویرایش میکند.









