Reimpostare la password dell'utente root in ESXi 7.x

Reimpostare la password dell'utente root in ESXi 7.x

A volte, per vari motivi, non riesci ad accedere alla console di gestione di ESXi perché non disponi di una password valida. Questo può accadere a causa di una violazione del sistema, un guasto del sistema, la perdita della password o se hai ereditato un ESXi senza documentazione o un controllo amministrativo adeguato. È una situazione scomoda che dovrai affrontare. Forse non immediatamente, ma quando qualcosa va storto e devi intervenire su un sistema che fino ad ora ha funzionato normalmente. Questa guida è scritta proprio per questi casi.

Backup

Prima di eseguire qualsiasi azione, è necessario creare copie di backup della configurazione, delle macchine virtuali, delle impostazioni di rete e della licenza.

  1. Configurazione dell'host:

    vim-cmd hostsvc/firmware/backup_config
    • Il comando crea un backup della configurazione dell'host. Dopo l'esecuzione, l'output includerà un URL (ad esempio, http:///downloads/.tgz).
    • Scarica il file da questo URL utilizzando un browser web o un'utilità come wget o curl e salvalo su un dispositivo di archiviazione esterno:

      wget http:///downloads/.tgz -O /path/to/backup/.tgz
    • Per ripristinare la configurazione, utilizza l'interfaccia web di vSphere Client:

      1. Vai a "Host" → "Configure" → "System" → "Backup/Restore".
      2. Seleziona "Restore" e carica il file .tgz precedentemente salvato.

      In alternativa, per sincronizzare la configurazione corrente con quella salvata sul disco, usa:

      vim-cmd hostsvc/firmware/sync_config
    • È richiesta una password root valida. Se non disponibile, utilizza l'accesso tramite vCenter o chiavi SSH.
  2. Macchine virtuali:

    ovftool vi://root@[ESXI_IP]/[VM_NAME] /path/to/backup/[VM_NAME].ova
    • È necessaria l'utilità ovftool, installata su una macchina amministrativa (Windows, macOS o Linux). L'utilità può essere scaricata dal sito VMware Customer Connect.
    • Assicurati che la macchina amministrativa abbia accesso all'host ESXi e utilizza una password root valida per eseguire il comando.
    • Salva il file .ova su un dispositivo di archiviazione esterno.
  3. Impostazioni di rete:

    esxcli network ip interface list > network_config.txt

    Salva l'output in un file.

  4. Licenza ESXi:

    vim-cmd vimsvc/license --show

Conserva i backup su un dispositivo di archiviazione esterno non connesso all'host.

Determinazione del tipo di infrastruttura

Per scegliere il metodo di ripristino ottimale, determina il tipo di host:

  • Gestito da vCenter: La sezione "Summary" dell'interfaccia web di ESXi indica un server vCenter.
  • Autonomo: La gestione avviene direttamente, senza vCenter.

Metodo 1: Host gestito da vCenter (Host Profiles)

Questo metodo utilizza Host Profiles per gli host connessi a vCenter. Non richiede un riavvio ed è supportato da VMware.

Requisiti

  • Licenza VMware vSphere Enterprise Plus.
  • Accesso al server vCenter.
  • Un altro host ESXi con una password root conosciuta e una versione identica di ESXi (ad esempio, 7.0 Update 3c).
  • Se utilizzi una licenza Standard o inferiore, usa il Metodo 2 (reinstallazione) o il Metodo 3 (Nested ESXi).

Passaggi

  1. Accedi a vSphere Client (HTML5).
  2. Naviga nella sezione "Host Profiles":

    • Seleziona nel menu principale "Menu" → "Host Profiles" o naviga tramite "Inventory" → "Hosts and Clusters" → "Host Profiles" (a seconda della versione di vSphere).
  3. Estrai un profilo:

    • Seleziona un host con una password conosciuta.
    • Fai clic su "Extract Profile from Host".
    • Assegna un nome al profilo, ad esempio Password_Reset_Profile.
    • Attendi il completamento.
  4. Modifica il profilo:

    • Seleziona il profilo e fai clic su "Edit Settings".
    • Naviga su "Security Configuration" → "Authentication Configuration".
    • Nella sezione "Local User Accounts", seleziona l'account root.
    • Imposta una nuova password (almeno 8 caratteri, inclusi lettere maiuscole, numeri e caratteri speciali).
    • Salva le modifiche.
  5. Prepara l'host di destinazione:

    • Seleziona l'host con la password dimenticata.
    • Entra in modalità manutenzione: clic destro → "Enter Maintenance Mode".
    • Seleziona "Move powered off and suspended virtual machines to other hosts" se applicabile.
    • Se DRS o vMotion non sono disponibili, spegni le macchine virtuali.
    • Attendi il completamento.
  6. Applica il profilo:

    • Nella sezione "Host Profiles", seleziona il profilo.
    • Fai clic su "Attach/Detach Hosts and Clusters", seleziona l'host.
    • Fai clic su "Attach", quindi su "Remediate".
    • Conferma le modifiche e attendi il completamento (circa dieci minuti).
  7. Verifica:

    • Esci dalla modalità manutenzione: clic destro → "Exit Maintenance Mode".
    • Accedi con la nuova password tramite l'interfaccia web o SSH.
    • Verifica le macchine virtuali:

      vim-cmd vmsvc/getallvms

Note

  • La versione di ESXi dell'host di riferimento deve corrispondere a quella dell'host di destinazione.
  • Discrepanze di configurazione possono causare errori. Controlla i log di vCenter.

Rischi

  • Minimi se si seguono le istruzioni.
  • Possibili guasti dovuti a discrepanze di configurazione.

Metodo 2: Host autonomo — Reinstallazione

Per gli host autonomi, viene utilizzata la reinstallazione di ESXi. Questo metodo comporta la perdita della configurazione senza backup.

Passaggi

  1. Preparazione:

    • Scarica ESXi da VMware Customer Connect.
    • Crea un USB avviabile utilizzando Rufus, Ventoy o:

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

      Assicurati che /dev/sdX sia il dispositivo USB corretto (verifica con lsblk o fdisk -l).

    • Esegui un backup (vedi sezione "Backup").
  2. Reinstallazione:

    • Avvia dal supporto di installazione.
    • Seleziona il disco e conferma la sovrascrittura.
    • Imposta una nuova password root (si consiglia almeno 8 caratteri).
    • Attendi il completamento dell'installazione (circa 15 minuti).
  3. Ripristino:

    • Configura la rete:

      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

      Se l'host utilizzava un vSphere Distributed Switch (vDS), ripristina vDS tramite vCenter o configura un vSphere Standard Switch (vSS).

    • Collega l'archiviazione:

      esxcli storage core adapter rescan --all

      Per montare tutti i volumi VMFS disponibili, usa:

      esxcli storage filesystem automount

      Se il montaggio automatico fallisce, verifica i volumi disponibili e monta manualmente:

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

      Sostituisci [VOLUME_LABEL] con il nome del volume ottenuto dal comando list.

    • Importa le macchine virtuali:

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

      Assicurati che ovftool venga eseguito su una macchina amministrativa con accesso all'host.

    • Ripristina la licenza:

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

      Il parametro --label è opzionale, ma consigliato per identificare la licenza nell'interfaccia vSphere.

Rischi

  • Perdita della configurazione e delle macchine virtuali senza backup.
  • Richiede la riconfigurazione di rete e archiviazione.

Metodo 3: Host autonomo — Metodo alternativo

Per gli host autonomi in cui la reinstallazione non è possibile, si utilizza un metodo con Nested ESXi e una VM Linux per modificare i file di configurazione. È complesso, non supportato da VMware e destinato ad amministratori esperti.

Requisiti

  • VM Nested ESXi corrispondente alla versione e build dell'host (ad esempio, 7.0 Update 3c). Disponibile su VMware Flings.
  • VM Linux (ad esempio, Ubuntu 20.04+).
  • Accesso fisico al server.
  • Esperienza con Linux.

Passaggi

  1. Distribuisci Nested ESXi e una VM Linux.
  2. Avvia da un Linux LiveCD, monta le partizioni ESXi e copia i file state.tgz e local.tgz.
  3. Trasferisci i file a Nested ESXi, decrittali utilizzando /usr/lib/vmware/crypto-util e modifica l'hash della password nel database SQLite.
  4. Ripacchetta e crittografa i file, rimettili sull'host e riavvia.

Rischi

  • Se l'host utilizza un Trusted Platform Module (TPM), i file di configurazione sono legati alle chiavi TPM. La sostituzione dei file senza chiavi può rendere il sistema non operativo. Verifica:

    esxcli system settings encryption get

    Se Encryption Mode indica TPM, questo metodo potrebbe non essere applicabile.

  • Modifiche errate possono reimpostare le impostazioni di rete, l'archiviazione o le macchine virtuali.
  • Nested ESXi deve corrispondere esattamente alla versione dell'host.
  • In ESXi 8.x, il metodo potrebbe non funzionare a causa di modifiche alla crittografia.

Alternativa

Se SSH è abilitato, aggiungi una chiave SSH:

  • Genera una chiave:

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

Misure preventive

  1. Documentazione:

    • Conserva le password in un gestore di password, come HashiCorp Vault.
    • Mantieni aggiornata la documentazione.
  2. Accesso SSH:

    • Abilita SSH per la sessione corrente:

      esxcli system services enable --id=TSM-SSH
      esxcli system services start --id=TSM-SSH
    • Per l'avvio automatico di SSH all'avvio:

      esxcli system services set --policy=on --id=TSM-SSH
    • Disabilita il timeout della shell ESXi:

      esxcli system settings advanced set -o /UserVars/ESXiShellTimeOut -i 0
    • In alternativa, configura tramite vSphere Client:

      1. Seleziona l'host → "Configure" → "Services".
      2. Trova "TSM-SSH", seleziona "Options" → "Start and stop with host".
    • Configura chiavi SSH:

      1. Genera una chiave sulla macchina client:

        ssh-keygen -t rsa -b 4096
      2. Copia la chiave pubblica (ad esempio, ~/.ssh/id_rsa.pub) sull'host:

        scp ~/.ssh/id_rsa.pub root@[ESXI_IP]:/etc/ssh/keys-root/authorized_keys
      3. Imposta i permessi:

        ssh root@[ESXI_IP] "chmod 644 /etc/ssh/keys-root/authorized_keys"
    • Conserva le chiavi in /etc/ssh/keys-root/authorized_keys.
  3. Active Directory:

    • Unisci l'host a un dominio tramite CLI:

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

      Specifica [DOMAIN] (ad esempio, example.com), [USERNAME] (utente con permessi di unione) e [PASSWORD].

    • In alternativa, usa vSphere Client:

      1. Seleziona l'host → "Configure" → "Authentication Services".
      2. Fai clic su "Join Domain", specifica il dominio e le credenziali.
    • Assegna permessi a un gruppo di dominio tramite vSphere Client:

      1. Seleziona l'host o vCenter.
      2. Naviga su "Permissions".
      3. Fai clic su "Add", seleziona il gruppo (ad esempio, DOMAIN\GroupName) e assegna un ruolo (ad esempio, "Administrator").
    • Per l'automazione, usa PowerCLI:

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

    • Usa vRealize Operations o Zabbix.
    • Configura notifiche per i guasti.
  5. Backup:

    • Automatizza:

      vim-cmd hostsvc/firmware/backup_config

      Scarica il file tramite l'URL e salvalo su un dispositivo esterno.