Die Rahmenbedingungen sind sicher nicht sehr typisch, kann aber sicher auch mal hier und da wieder auftreten - deshalb schreibe ich diesen Artikel:
Die Situation:
- VMware ESXi-Server 7.0.3, standalone (also ohne vCenter)
- Es gibt einen SSH-Zugang - natürlich per privatem Schlüssel.
- Das
root
-Passwort wurde "vergessen". - Es gibt keinen anderen Benutzer mit Administrationsrechten, der sich anmelden kann.
Es kann sich also niemand mehr auf der Web-GUI oder direkt am Server anmelden, außer eben über den SSH-Zugang, der nicht über Passwort, sondern über ein Public-/Private-Key-Paar erfolgt.
Wenn man im Web recherchiert, findet man einige Treffer, die im Wesentlichen vier Methoden beschreiben. Ein besonders ausführlicher Artikel findet man z. B. auf dem NAKIVO-Blog: The Best Way to Reset the ESXi Default Password
Methode 1: Recovering an ESXi Default Password by Using VMware Host Profiles
Das scheidet hier aus, da der ESXi-Server nicht über vCenter verwaltet wird (und es auch keine VMware Enterprise Plus-Lizenz gibt, die auch Voraussetzung wäre).
Methode 2: ESXi Password Recovery in Active Directory
Dafür hätte der ESXi-Server schon vorher mit einem Active Directory verbunden worden sein müssen.
Methode 3: Resetting an ESXi Password by Editing /etc/shadow
Mit einem Live-Linux booten (erfordert also einen Neustart), und von außen die richtigen Stellen bearbeiten und so das root-Passwort erst einmal löschen. Nach dem zweiten Neustart kann man sich auf der Konsole als root ohne Passwort anmelden und ein neues setzen. Es gibt also auf alle Fälle eine Downtime. Und wenn es nicht klappt, laufen die VMs vielleicht nicht mehr an.
Methode 4: Changing an ESXi Default Password by Replacing the state.tgz Archive
Eine Variante von Methode 3. Wenn man einen weiteren ESXi-Server hat (oder zufällig eine Sicherung der notwendigen Dateien), kann man die Konfiguration vom anderen Server bzw. aus der Sicherung an den richtigen Platz legen. Nachteile: siehe Methode 3.
passwd geht (scheinbar) nicht mehr
Eigentlich sollte es ganz einfach gehen, wenn man dem Knowledge-Base-Artikel von VMware glaubt: Changing an ESXi/ESX host root password (1004659)
Einloggen per SSH, su -
und dann passwd root
.
Leider hatte das in meinem Fall keine Wirkung. In den Notes steht dann auch:
"In ESXi 3.5 and later versions, reinstalling the ESXi software is the only supported way to reset a password if the root password is forgotten."
Drüber installieren also. Gut, die VMs bleiben ja erhalten, aber trotzdem eine ordentliche Downtime.
ESXCLI zur Rettung
Über Artikel, die die PowerShell-Schnittstelle beschreiben, bin ich dann auf die für mich perfekte Fährte gestoßen: die ESXCLI-System-Befehle!
Hier ist die Dokumentation zu selbigen: ESXi 7.0 U3 ESXCLI Command Reference
Mit esxcli system account set
kann man einen vorhandenen, lokalen Benutzer anpassen, insbesondere das Passwort des Benutzers setzen.
esxcli system account set help
gibt eine kurze Hilfe aus.
Aber vorher schnell ein esxcli system account list
, um die aktuelle Benutzerliste auszugeben.
Das finale Kommando war dann:
esxcli system account set -d "Administrator" -i root -p "
****************
" -c "****************"
Die Wirkung war sofort und gründlich. Ohne Downtime konnte sich root
jetzt wieder anmelden.
Und am besten sofort einen zweiten Administrator-Benutzer erstellen für das nächste Mal.