Resetowanie hasła użytkownika root w ESXi 7.x
⚠️ WAŻNE POWIADOMIENIE O ZGODNOŚCI
Ta metoda resetowania hasła root zależy od wersji ESXi i nie jest obsługiwana we wszystkich wydaniach.
Obsługiwane wersje:
- ESXi 6.0, 6.5, 6.7 (wszystkie buildy)
- ESXi 7.0 (GA)
- ESXi 7.0 Update 1
- ESXi 7.0 Update 2
Nieobsługiwane:
- ESXi 7.0 Update 3 i nowsze (archiwum konfiguracji
local.tgzjest zaszyfrowane i przechowywane jakolocal.tgz.ve) - ESXi 8.0 i nowsze wersje
Powód: Począwszy od ESXi 7.0 Update 3, VMware wprowadziła szyfrowanie archiwów konfiguracji, co uniemożliwia bezpośrednią modyfikację pliku /etc/shadow za pośrednictwem LiveCD.
Dla wersji zaszyfrowanych (7.0 U3+, 8.0+), użyj alternatywnych metod:
- Użycie
crypto-utilna innym hoście ESXi (wymaga utworzenia zagnieżdżonej VM ESXi) - Odzyskiwanie za pośrednictwem Host Profiles (wymaga vCenter)
- Ponowna instalacja ESXi z zachowaniem magazynów VMFS (ostatnia deska ratunku)
Sprawdź zainstalowaną wersję ESXi przed kontynuowaniem.
Czasami, z tego czy innego powodu, możesz nie być w stanie uwierzytelnić się w konsoli zarządzania ESXi, ponieważ nie masz aktualnego hasła. Może to być spowodowane włamaniem do systemu, awarią systemu, utratą hasła lub odziedziczeniem ESXi bez dokumentacji lub odpowiednich kontroli administracyjnych. Jest to nieprzyjemna sytuacja i trzeba będzie coś z tym zrobić. Może nie od razu, ale gdy coś pójdzie nie tak i będziesz musiał ingerować w system, który do tej pory działał normalnie. Ta instrukcja została napisana właśnie na takie przypadki.
Istnieje kilka sposobów resetowania hasła. Jednak ten opisany w tym artykule jest uniwersalny i będzie działać nie tylko dla wersji 7.x, ale także dla wcześniejszych. Został przetestowany w praktyce i działa w większości przypadków. Zacznijmy.
Wymagania wstępne
Najpierw musimy uruchomić system z dowolnego Live CD. Może to być obraz instalacyjny Ubuntu lub, jak w naszym przypadku, Finnix. Jest to dystrybucja oparta na Debianie z rozbudowanymi możliwościami diagnostyki i odzyskiwania po awarii.
Po uruchomieniu zobaczysz wiersz poleceń konsoli:

W przypadku gdy serwer znajduje się zdalnie i jesteś z nim połączony przez IP-KVM, praca w tym trybie nie jest zbyt wygodna ze względu na duże opóźnienie odpowiedzi konsoli. Aby tego uniknąć, możesz skonfigurować serwer SSH. Jeśli nie jest to problem, możesz pominąć ten krok.
# ustaw hasło root dla systemu live passwd # uruchom serwer ssh service ssh start
Następnie możesz połączyć się z serwerem używając ulubionego klienta SSH lub z konsoli:
ssh root@1.2.3.4
Znalezienie partycji ESXi
Teraz musimy określić, który dysk zawiera potrzebną nam partycję. W tym celu najpierw sprawdźmy, jakie dyski mamy.
root@0:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 377.2M 1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs sda 8:0 1 3.6T 0 disk └─sda1 8:1 1 3.6T 0 part sdb 8:16 1 3.6T 0 disk └─sdb1 8:17 1 3.6T 0 part sr0 11:0 1 455M 0 rom /run/live/medium zram0 252:0 0 62.8G 0 disk [SWAP] nvme1n1 259:0 0 476.9G 0 disk └─nvme1n1p1 259:2 0 476.9G 0 part nvme0n1 259:1 0 476.9G 0 disk ├─nvme0n1p1 259:3 0 4M 0 part ├─nvme0n1p2 259:4 0 4G 0 part ├─nvme0n1p3 259:5 0 469.6G 0 part ├─nvme0n1p5 259:6 0 250M 0 part ├─nvme0n1p6 259:7 0 250M 0 part ├─nvme0n1p7 259:8 0 110M 0 part ├─nvme0n1p8 259:9 0 286M 0 part └─nvme0n1p9 259:10 0 2.5G 0 part
Naszym głównym kryterium wyszukiwania jest partycja dyskowa o rozmiarze 250 MB. Jak widać, dysk nvme0n1 zawiera taką partycję. Przyjrzyjmy się jej bliżej:
fdisk -l /dev/nvme0n1

Naszym celem jest partycja zaczynająca się od sektora 8224 i mająca rozmiar 250 MB. To właśnie ta partycja zawiera potrzebne nam dane.
Wyodrębnianie plików konfiguracyjnych
Aby kontynuować, utwórzmy 2 katalogi: jeden do montowania dysku, a drugi dla danych, które musimy edytować.
mkdir /mnt/vmware && mkdir /tmp/vmware
Zamontuj znalezioną partycję
mount /dev/nvme0n1p5 /mnt/vmware
W środku jest wiele rzeczy, ale potrzebujemy konkretnego pliku

Należy go rozpakować do wcześniej utworzonego katalogu
tar -xf /mnt/vmware/state.tgz -C /tmp/vmware/ tar -xf /tmp/vmware/local.tgz -C /tmp/vmware/ rm /tmp/vmware/local.tgz
Teraz, jeśli przejdziemy do /tmp/vmware/ i przejrzymy jego zawartość, znajdziemy tam znany katalog etc.
Edytowanie pliku Shadow
Następnie musimy edytować plik shadow i usunąć z niego hash hasła root. W ten sposób ESXi uzna, że hasło użytkownika jest puste po naszej manipulacji.
nano /tmp/vmware/etc/shadow
Należy to zrobić ostrożnie. Konieczne jest usunięcie zawartości między pierwszym a drugim dwukropkiem

i powinno to wyglądać tak

Przywracanie i ponowne uruchamianie
Zapisz plik klawiszem F3. To kończy najważniejszą część. Następnie należy spakować wszystko i umieścić z powrotem tam, gdzie to znaleźliśmy.
cd /tmp/vmware/ tar -czf local.tgz etc tar -czf state.tgz local.tgz mv state.tgz /mnt/vmware/
Odmontuj dysk ESXi i uruchom ponownie.
umount /mnt/vmware/ reboot
Po ponownym uruchomieniu zaloguj się do interfejsu webowego ESXi jako użytkownik root z pustym hasłem i zmień je na potrzebne za pomocą standardowych środków poprzez menu w prawym górnym rogu.
Możliwe problemy i rozwiązania
- Błąd montowania partycji: Upewnij się, że podałeś prawidłową ścieżkę do dysku systemowego. Uruchom
lsblk, aby wyświetlić strukturę partycji. - Brak pliku Shadow: Sprawdź poprawność ścieżki
/tmp/etc/shadow. Upewnij się, że archiwastate.tgzilocal.tgzzostały pomyślnie rozpakowane. - Hasło nie zostało zresetowane: Sprawdź, czy zmiany zostały zapisane i czy pliki zostały pomyślnie przebudowane i przeniesione do pierwotnej lokalizacji.
To wszystko! Cel osiągnięty! Zalecamy zapisanie nowego hasła i nigdy więcej go nie zgubić!