Restablecer contraseña de usuario root en ESXi 7.x

Restablecer contraseña de usuario root en ESXi 7.x

A veces, por diversas razones, no puedes iniciar sesión en la consola de administración de ESXi porque no tienes una contraseña válida. Esto puede ocurrir debido a una brecha de seguridad en el sistema, una falla del sistema, la pérdida de la contraseña o si has heredado un ESXi sin documentación o control administrativo adecuado. Esta es una situación incómoda que necesitarás abordar. Tal vez no de inmediato, pero cuando algo salga mal y debas intervenir en un sistema que hasta ahora ha funcionado normalmente. Esta guía está escrita específicamente para estos casos.

Copia de seguridad

Antes de realizar cualquier acción, debes crear copias de seguridad de la configuración, máquinas virtuales, configuraciones de red y la licencia.

  1. Configuración del host:

    vim-cmd hostsvc/firmware/backup_config
    • El comando crea una copia de seguridad de la configuración del host. Tras su ejecución, la salida incluirá una URL (por ejemplo, http:///downloads/.tgz).
    • Descarga el archivo desde esta URL usando un navegador web o una herramienta como wget o curl, y guárdalo en un dispositivo de almacenamiento externo:

      wget http:///downloads/.tgz -O /path/to/backup/.tgz
    • Para restaurar la configuración, usa la interfaz web de vSphere Client:

      1. Navega a "Host" → "Configure" → "System" → "Backup/Restore".
      2. Selecciona "Restore" y carga el archivo .tgz previamente guardado.

      Alternativamente, para sincronizar la configuración actual con la almacenada en el disco, usa:

      vim-cmd hostsvc/firmware/sync_config
    • Se requiere una contraseña de root válida. Si no está disponible, usa el acceso a través de vCenter o claves SSH.
  2. Máquinas virtuales:

    ovftool vi://root@[ESXI_IP]/[VM_NAME] /path/to/backup/[VM_NAME].ova
    • Es necesaria la herramienta ovftool, instalada en una máquina administrativa (Windows, macOS o Linux). La herramienta se puede descargar desde VMware Customer Connect.
    • Asegúrate de que la máquina administrativa tenga acceso al host ESXi y usa una contraseña de root válida para ejecutar el comando.
    • Guarda el archivo .ova en un dispositivo de almacenamiento externo.
  3. Configuraciones de red:

    esxcli network ip interface list > network_config.txt

    Guarda la salida en un archivo.

  4. Licencia de ESXi:

    vim-cmd vimsvc/license --show

Almacena las copias de seguridad en un dispositivo externo no conectado al host.

Determinación del tipo de infraestructura

Para elegir el método óptimo de restablecimiento, determina el tipo de host:

  • Gestionado por vCenter: La sección "Summary" de la interfaz web de ESXi indica un servidor vCenter.
  • Independiente: La gestión se realiza directamente, sin vCenter.

Método 1: Host gestionado por vCenter (Host Profiles)

Este método utiliza Host Profiles para hosts conectados a vCenter. No requiere reinicio y está soportado por VMware.

Requisitos

  • Licencia VMware vSphere Enterprise Plus.
  • Acceso al servidor vCenter.
  • Otro host ESXi con una contraseña de root conocida y una versión idéntica de ESXi (por ejemplo, 7.0 Update 3c).
  • Si usas una licencia Standard o inferior, utiliza el Método 2 (reinstalación) o el Método 3 (Nested ESXi).

Pasos

  1. Inicia sesión en vSphere Client (HTML5).
  2. Navega a la sección "Host Profiles":

    • Selecciona en el menú principal "Menu" → "Host Profiles" o navega a través de "Inventory" → "Hosts and Clusters" → "Host Profiles" (dependiendo de la versión de vSphere).
  3. Extraer un perfil:

    • Selecciona un host con una contraseña conocida.
    • Haz clic en "Extract Profile from Host".
    • Asigna un nombre al perfil, por ejemplo, Password_Reset_Profile.
    • Espera a que se complete.
  4. Editar el perfil:

    • Selecciona el perfil y haz clic en "Edit Settings".
    • Navega a "Security Configuration" → "Authentication Configuration".
    • En la sección "Local User Accounts", selecciona la cuenta root.
    • Establece una nueva contraseña (al menos 8 caracteres, incluyendo letras mayúsculas, números y caracteres especiales).
    • Guarda los cambios.
  5. Preparar el host objetivo:

    • Selecciona el host con la contraseña olvidada.
    • Entra en el modo de mantenimiento: clic derecho → "Enter Maintenance Mode".
    • Selecciona "Move powered off and suspended virtual machines to other hosts" si es aplicable.
    • Si no hay DRS o vMotion disponibles, apaga las máquinas virtuales.
    • Espera a que se complete.
  6. Aplicar el perfil:

    • En la sección "Host Profiles", selecciona el perfil.
    • Haz clic en "Attach/Detach Hosts and Clusters", selecciona el host.
    • Haz clic en "Attach", luego en "Remediate".
    • Confirma los cambios y espera a que se complete (aproximadamente diez minutos).
  7. Verificar:

    • Sal del modo de mantenimiento: clic derecho → "Exit Maintenance Mode".
    • Inicia sesión con la nueva contraseña a través de la interfaz web o SSH.
    • Verifica las máquinas virtuales:

      vim-cmd vmsvc/getallvms

Notas

  • La versión de ESXi del host de referencia debe coincidir con el host objetivo.
  • Las discrepancias de configuración pueden causar errores. Verifica los registros de vCenter.

Riesgos

  • Mínimos si se siguen las instrucciones.
  • Posibles fallos debido a discrepancias de configuración.

Método 2: Host independiente — Reinstalación

Para hosts independientes, se utiliza la reinstalación de ESXi. Este método resulta en la pérdida de la configuración sin copias de seguridad.

Pasos

  1. Preparación:

    • Descarga ESXi desde VMware Customer Connect.
    • Crea un USB de arranque usando Rufus, Ventoy o:

      sudo dd if=/path/to/esxi.iso of=/dev/sdX bs=4M status=progress && sync

      Asegúrate de que /dev/sdX es el dispositivo USB correcto (verifica con lsblk o fdisk -l).

    • Realiza una copia de seguridad (ver sección "Copia de seguridad").
  2. Reinstalación:

    • Arranca desde el medio de instalación.
    • Selecciona el disco y confirma la sobrescritura.
    • Establece una nueva contraseña de root (se recomienda al menos 8 caracteres).
    • Espera a que se complete la instalación (aproximadamente 15 minutos).
  3. Restauración:

    • Configura la red:

      esxcli network ip interface ipv4 set -i vmk0 -I [IP] -N [NETMASK] -t static
      esxcli network ip route ipv4 add -g [GATEWAY] -n default
      esxcli network ip interface set -e false -i vmk0; esxcli network ip interface set -e true -i vmk0

      Si el host usaba un vSphere Distributed Switch (vDS), restaura vDS a través de vCenter o configura un vSphere Standard Switch (vSS).

    • Conecta el almacenamiento:

      esxcli storage core adapter rescan --all

      Para montar todos los volúmenes VMFS disponibles, usa:

      esxcli storage filesystem automount

      Si el montaje automático falla, verifica los volúmenes disponibles y móntalos manualmente:

      esxcli storage filesystem list
      esxcli storage filesystem mount --volume-label=[VOLUME_LABEL]

      Reemplaza [VOLUME_LABEL] con el nombre del volumen obtenido del comando list.

    • Importar máquinas virtuales:

      ovftool /path/to/backup/[VM_NAME].ova vi://root@[ESXI_IP]/

      Asegúrate de que ovftool se ejecute en una máquina administrativa con acceso al host.

    • Restaurar la licencia:

      vim-cmd vimsvc/license --set [LICENSE_KEY] --label="ESXi License"

      El parámetro --label es opcional, pero se recomienda para identificar la licencia en la interfaz de vSphere.

Riesgos

  • Pérdida de la configuración y máquinas virtuales sin copias de seguridad.
  • Requiere reconfigurar la red y el almacenamiento.

Método 3: Host independiente — Método alternativo

Para hosts independientes donde la reinstalación no es posible, se usa un método con Nested ESXi y una VM de Linux para modificar archivos de configuración. Es complejo, no está soportado por VMware y está destinado a administradores experimentados.

Requisitos

  • VM de Nested ESXi que coincida con la versión y compilación del host (por ejemplo, 7.0 Update 3c). Disponible en VMware Flings.
  • VM de Linux (por ejemplo, Ubuntu 20.04+).
  • Acceso físico al servidor.
  • Experiencia con Linux.

Pasos

  1. Desplegar Nested ESXi y una VM de Linux.
  2. Arranca desde un Linux LiveCD, monta las particiones de ESXi y copia los archivos state.tgz y local.tgz.
  3. Transfiere los archivos a Nested ESXi, descífralos usando /usr/lib/vmware/crypto-util y modifica el hash de la contraseña en la base de datos SQLite.
  4. Empaqueta y cifra los archivos nuevamente, devuélvelos al host y reinicia.

Riesgos

  • Si el host usa un Trusted Platform Module (TPM), los archivos de configuración están vinculados a las claves TPM. Reemplazar archivos sin las claves puede hacer que el sistema quede inoperable. Verifica:

    esxcli system settings encryption get

    Si Encryption Mode indica TPM, este método puede no ser aplicable.

  • Cambios incorrectos pueden restablecer configuraciones de red, almacenamiento o máquinas virtuales.
  • Nested ESXi debe coincidir exactamente con la versión del host.
  • En ESXi 8.x, el método puede no funcionar debido a cambios en el cifrado.

Alternativa

Si SSH está habilitado, agrega una clave SSH:

  • Generar una clave:

    ssh-keygen -t rsa -b 4096
  • Agrega la clave a /etc/ssh/keys-root/authorized_keys.

Medidas preventivas

  1. Documentación:

    • Almacena las contraseñas en un administrador de contraseñas, como HashiCorp Vault.
    • Mantén la documentación actualizada.
  2. Acceso SSH:

    • Habilita SSH para la sesión actual:

      esxcli system services enable --id=TSM-SSH
      esxcli system services start --id=TSM-SSH
    • Para el inicio automático de SSH al arrancar:

      esxcli system services set --policy=on --id=TSM-SSH
    • Desactiva el tiempo de espera de ESXi Shell:

      esxcli system settings advanced set -o /UserVars/ESXiShellTimeOut -i 0
    • Alternativamente, configura a través de vSphere Client:

      1. Selecciona el host → "Configure" → "Services".
      2. Busca "TSM-SSH", selecciona "Options" → "Start and stop with host".
    • Configura claves SSH:

      1. Genera una clave en la máquina cliente:

        ssh-keygen -t rsa -b 4096
      2. Copia la clave pública (por ejemplo, ~/.ssh/id_rsa.pub) al host:

        scp ~/.ssh/id_rsa.pub root@[ESXI_IP]:/etc/ssh/keys-root/authorized_keys
      3. Establece permisos:

        ssh root@[ESXI_IP] "chmod 644 /etc/ssh/keys-root/authorized_keys"
    • Almacena las claves en /etc/ssh/keys-root/authorized_keys.
  3. Active Directory:

    • Une el host a un dominio a través de CLI:

      esxcli system authentication activedirectory join -d [DOMAIN] -u [USERNAME] -p [PASSWORD]

      Especifica [DOMAIN] (por ejemplo, example.com), [USERNAME] (usuario con permisos de unión) y [PASSWORD].

    • Alternativamente, usa vSphere Client:

      1. Selecciona el host → "Configure" → "Authentication Services".
      2. Haz clic en "Join Domain", especifica el dominio y las credenciales.
    • Asigna permisos a un grupo de dominio a través de vSphere Client:

      1. Selecciona el host o vCenter.
      2. Navega a "Permissions".
      3. Haz clic en "Add", selecciona el grupo (por ejemplo, DOMAIN\GroupName) y asigna un rol (por ejemplo, "Administrator").
    • Para la automatización, usa PowerCLI:

      New-VIPermission -Entity (Get-VMHost) -Principal "DOMAIN\GroupName" -Role Admin
  4. Monitoreo:

    • Usa vRealize Operations o Zabbix.
    • Configura notificaciones para fallos.
  5. Copia de seguridad:

    • Automatiza:

      vim-cmd hostsvc/firmware/backup_config

      Descarga el archivo a través de la URL y guárdalo en un dispositivo externo.