Resetowanie hasła użytkownika root w ESXi 7.x

Resetowanie hasła użytkownika root w ESXi 7.x

Czasami z różnych powodów nie możesz zalogować się do konsoli zarządzania ESXi, ponieważ nie posiadasz aktualnego hasła. Może to się zdarzyć z powodu naruszenia bezpieczeństwa systemu, awarii systemu, utraty hasła lub jeśli odziedziczyłeś ESXi bez dokumentacji lub odpowiedniej kontroli administracyjnej. To nieprzyjemna sytuacja, którą trzeba będzie rozwiązać. Może nie od razu, ale gdy coś pójdzie nie tak i będziesz musiał interweniować w system, który do tej pory działał normalnie. Ta instrukcja została napisana właśnie dla takich przypadków.

Kopia zapasowa

Przed wykonaniem jakichkolwiek działań należy utworzyć kopie zapasowe konfiguracji, maszyn wirtualnych, ustawień sieciowych oraz licencji.

  1. Konfiguracja hosta:

    vim-cmd hostsvc/firmware/backup_config
    • Polecenie tworzy kopię zapasową konfiguracji hosta. Po wykonaniu polecenia w wyniku pojawi się adres URL (np. http:///downloads/.tgz).
    • Pobierz plik z tego adresu URL za pomocą przeglądarki internetowej lub narzędzia, takiego jak wget lub curl, i zapisz go na zewnętrznym nośniku:

      wget http:///downloads/.tgz -O /path/to/backup/.tgz
    • Aby przywrócić konfigurację, użyj interfejsu webowego vSphere Client:

      1. Przejdź do "Host" → "Configure" → "System" → "Backup/Restore".
      2. Wybierz "Restore" i prześlij wcześniej zapisany plik .tgz.

      Alternatywnie, aby zsynchronizować bieżącą konfigurację z tą zapisaną na dysku, użyj:

      vim-cmd hostsvc/firmware/sync_config
    • Wymagane jest aktualne hasło root. Jeśli go nie posiadasz, użyj dostępu przez vCenter lub kluczy SSH.
  2. Maszyny wirtualne:

    ovftool vi://root@[ESXI_IP]/[VM_NAME] /path/to/backup/[VM_NAME].ova
    • Wymagane jest narzędzie ovftool, zainstalowane na maszynie administracyjnej (Windows, macOS lub Linux). Narzędzie można pobrać ze strony VMware Customer Connect.
    • Upewnij się, że maszyna administracyjna ma dostęp do hosta ESXi i użyj aktualnego hasła root do wykonania polecenia.
    • Zapisz plik .ova na zewnętrznym nośniku.
  3. Ustawienia sieciowe:

    esxcli network ip interface list > network_config.txt

    Zapisz wynik w pliku.

  4. Licencja ESXi:

    vim-cmd vimsvc/license --show

Kopie zapasowe przechowuj na zewnętrznym nośniku, który nie jest podłączony do hosta.

Określenie typu infrastruktury

Aby wybrać optymalną metodę resetowania, określ typ hosta:

  • Zarządzany przez vCenter: W sekcji "Summary" interfejsu webowego ESXi wskazany jest serwer vCenter.
  • Samodzielny: Zarządzanie odbywa się bezpośrednio, bez vCenter.

Metoda 1: Host zarządzany przez vCenter (Host Profiles)

Ta metoda wykorzystuje Host Profiles dla hostów podłączonych do vCenter. Nie wymaga ponownego uruchamiania i jest wspierana przez VMware.

Wymagania

  • Licencja VMware vSphere Enterprise Plus.
  • Dostęp do serwera vCenter.
  • Inny host ESXi z znanym hasłem root i identyczną wersją ESXi (np. 7.0 Update 3c).
  • Jeśli używasz licencji Standard lub niższej, skorzystaj z Metody 2 (reinstalacja) lub Metody 3 (Nested ESXi).

Kroki

  1. Zaloguj się do vSphere Client (HTML5).
  2. Przejdź do sekcji "Host Profiles":

    • Wybierz w głównym menu "Menu" → "Host Profiles" lub przejdź przez "Inventory" → "Hosts and Clusters" → "Host Profiles" (w zależności od wersji vSphere).
  3. Wydobądź profil:

    • Wybierz host z znanym hasłem.
    • Kliknij "Extract Profile from Host".
    • Nadaj nazwę profilowi, np. Password_Reset_Profile.
    • Poczekaj na zakończenie.
  4. Edytuj profil:

    • Wybierz profil i kliknij "Edit Settings".
    • Przejdź do "Security Configuration" → "Authentication Configuration".
    • W sekcji "Local User Accounts" wybierz konto root.
    • Ustaw nowe hasło (co najmniej 8 znaków, w tym wielkie litery, cyfry i znaki specjalne).
    • Zapisz zmiany.
  5. Przygotuj docelowy host:

    • Wybierz host z zapomnianym hasłem.
    • Przełącz w tryb konserwacji: kliknij prawym przyciskiem myszy → "Enter Maintenance Mode".
    • Wybierz "Move powered off and suspended virtual machines to other hosts", jeśli dotyczy.
    • Jeśli DRS lub vMotion nie są dostępne, wyłącz maszyny wirtualne.
    • Poczekaj na zakończenie.
  6. Zastosuj profil:

    • W sekcji "Host Profiles" wybierz profil.
    • Kliknij "Attach/Detach Hosts and Clusters", wybierz host.
    • Kliknij "Attach", a następnie "Remediate".
    • Potwierdź zmiany i poczekaj na zakończenie (około dziesięciu minut).
  7. Sprawdź:

    • Wyjdź z trybu konserwacji: kliknij prawym przyciskiem myszy → "Exit Maintenance Mode".
    • Zaloguj się przy użyciu nowego hasła przez interfejs webowy lub SSH.
    • Sprawdź maszyny wirtualne:

      vim-cmd vmsvc/getallvms

Uwagi

  • Wersja ESXi hosta referencyjnego musi odpowiadać docelowemu.
  • Niezgodności konfiguracji mogą powodować błędy. Sprawdź logi vCenter.

Ryzyko

  • Minimalne, jeśli instrukcje są przestrzegane.
  • Możliwe awarie z powodu niezgodności konfiguracji.

Metoda 2: Samodzielny host — Reinstalacja

Dla samodzielnych hostów stosuje się reinstalację ESXi. Ta metoda prowadzi do utraty konfiguracji bez kopii zapasowych.

Kroki

  1. Przygotowanie:

    • Pobierz ESXi z VMware Customer Connect.
    • Stwórz bootowalny USB za pomocą Rufus, Ventoy lub:

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

      Upewnij się, że /dev/sdX to prawidłowe urządzenie USB (sprawdź za pomocą lsblk lub fdisk -l).

    • Wykonaj kopię zapasową (patrz sekcja "Kopia zapasowa").
  2. Reinstalacja:

    • Uruchom z nośnika instalacyjnego.
    • Wybierz dysk i potwierdź nadpisywanie.
    • Ustaw nowe hasło root (zaleca się co najmniej 8 znaków).
    • Poczekaj na zakończenie instalacji (około 15 minut).
  3. Przywracanie:

    • Skonfiguruj sieć:

      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

      Jeśli host używał vSphere Distributed Switch (vDS), przywróć vDS przez vCenter lub skonfiguruj vSphere Standard Switch (vSS).

    • Podłącz magazyny:

      esxcli storage core adapter rescan --all

      Aby zamontować wszystkie dostępne wolumeny VMFS, użyj:

      esxcli storage filesystem automount

      Jeśli automatyczne montowanie nie powiedzie się, sprawdź dostępne wolumeny i zamontuj ręcznie:

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

      Zamień [VOLUME_LABEL] na nazwę wolumenu uzyskaną z polecenia list.

    • Importuj maszyny wirtualne:

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

      Upewnij się, że ovftool jest uruchamiany na maszynie administracyjnej z dostępem do hosta.

    • Przywróć licencję:

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

      Parametr --label jest opcjonalny, ale zalecany do identyfikacji licencji w interfejsie vSphere.

Ryzyko

  • Utrata konfiguracji i maszyn wirtualnych bez kopii zapasowych.
  • Wymaga ponownej konfiguracji sieci i magazynów.

Metoda 3: Samodzielny host — Alternatywna metoda

Dla samodzielnych hostów, gdzie reinstalacja nie jest możliwa, stosuje się metodę z Nested ESXi i maszyną wirtualną Linux do modyfikacji plików konfiguracyjnych. Metoda jest skomplikowana, nie jest wspierana przez VMware i jest przeznaczona dla doświadczonych administratorów.

Wymagania

  • Maszyna wirtualna Nested ESXi zgodna z wersją i buildem hosta (np. 7.0 Update 3c). Dostępna na VMware Flings.
  • Maszyna wirtualna Linux (np. Ubuntu 20.04+).
  • Fizyczny dostęp do serwera.
  • Doświadczenie w pracy z Linux.

Kroki

  1. Wdroż Nested ESXi i maszynę wirtualną Linux.
  2. Uruchom z Linux LiveCD, zamontuj partycje ESXi i skopiuj pliki state.tgz oraz local.tgz.
  3. Przenieś pliki na Nested ESXi, odszyfruj je za pomocą /usr/lib/vmware/crypto-util i zmodyfikuj hash hasła w bazie SQLite.
  4. Spakuj i zaszyfruj pliki ponownie, zwróć je na hosta i uruchom ponownie.

Ryzyko

  • Jeśli host używa Trusted Platform Module (TPM), pliki konfiguracyjne są powiązane z kluczami TPM. Zastąpienie plików bez kluczy może sprawić, że system stanie się nieoperacyjny. Sprawdź:

    esxcli system settings encryption get

    Jeśli Encryption Mode wskazuje TPM, metoda może być nieprzystosowana.

  • Nieprawidłowe zmiany mogą zresetować ustawienia sieciowe, magazyny lub maszyny wirtualne.
  • Nested ESXi musi dokładnie odpowiadać wersji hosta.
  • W ESXi 8.x metoda może nie działać z powodu zmian w szyfrowaniu.

Alternatywa

Jeśli SSH jest włączony, dodaj klucz SSH:

  • Wygeneruj klucz:

    ssh-keygen -t rsa -b 4096
  • Dodaj klucz do /etc/ssh/keys-root/authorized_keys.

Środki zapobiegawcze

  1. Dokumentacja:

    • Przechowuj hasła w menedżerze haseł, np. HashiCorp Vault.
    • Utrzymuj dokumentację na bieżąco.
  2. Dostęp SSH:

    • Włącz SSH dla bieżącej sesji:

      esxcli system services enable --id=TSM-SSH
      esxcli system services start --id=TSM-SSH
    • Aby włączyć automatyczne uruchamianie SSH przy starcie:

      esxcli system services set --policy=on --id=TSM-SSH
    • Wyłącz limit czasu ESXi Shell:

      esxcli system settings advanced set -o /UserVars/ESXiShellTimeOut -i 0
    • Alternatywnie, skonfiguruj przez vSphere Client:

      1. Wybierz host → "Configure" → "Services".
      2. Znajdź "TSM-SSH", wybierz "Options" → "Start and stop with host".
    • Skonfiguruj klucze SSH:

      1. Wygeneruj klucz na maszynie klienckiej:

        ssh-keygen -t rsa -b 4096
      2. Skopiuj klucz publiczny (np. ~/.ssh/id_rsa.pub) na hosta:

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

        ssh root@[ESXI_IP] "chmod 644 /etc/ssh/keys-root/authorized_keys"
    • Przechowuj klucze w /etc/ssh/keys-root/authorized_keys.
  3. Active Directory:

    • Dołącz host do domeny przez CLI:

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

      Określ [DOMAIN] (np. example.com), [USERNAME] (użytkownik z uprawnieniami do dołączenia) i [PASSWORD].

    • Alternatywnie, użyj vSphere Client:

      1. Wybierz host → "Configure" → "Authentication Services".
      2. Kliknij "Join Domain", podaj domenę i dane uwierzytelniające.
    • Przypisz uprawnienia grupie domenowej przez vSphere Client:

      1. Wybierz host lub vCenter.
      2. Przejdź do "Permissions".
      3. Kliknij "Add", wybierz grupę (np. DOMAIN\GroupName) i przypisz rolę (np. "Administrator").
    • Do automatyzacji użyj PowerCLI:

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

    • Używaj vRealize Operations lub Zabbix.
    • Skonfiguruj powiadomienia o awariach.
  5. Kopia zapasowa:

    • Automatyzuj:

      vim-cmd hostsvc/firmware/backup_config

      Pobieraj plik przez URL i przechowuj na zewnętrznym nośniku.