Скидання пароля користувача root в ESXi 7.x

Скидання пароля користувача root в ESXi 7.x

Іноді з тих чи інших причин ви не можете увійти до консолі керування ESXi, оскільки у вас немає актуального пароля. Це може статися через злам системи, збій, втрату пароля або якщо ви отримали ESXi без документації чи належного адміністративного контролю. Це неприємна ситуація, і з нею доведеться щось робити. Можливо, не одразу, але коли щось піде не так і вам доведеться втрутитися в роботу системи, яка досі функціонувала нормально. Ця інструкція написана саме для таких випадків.

Резервне копіювання

Перед виконанням дій необхідно створити резервні копії конфігурації, віртуальних машин, мережевих налаштувань і ліцензії.

  1. Конфігурація хоста:

    vim-cmd hostsvc/firmware/backup_config
    • Команда створює резервну копію конфігурації хоста. Після виконання команди у виводі буде вказано URL (наприклад, http:///downloads/.tgz).
    • Завантажте файл за цим URL через веб-браузер або утиліту, наприклад wget чи curl, і збережіть його на зовнішньому носії:

      wget http:///downloads/.tgz -O /path/to/backup/.tgz
    • Для відновлення конфігурації використовуйте веб-інтерфейс vSphere Client:

      1. Перейдіть до "Host" → "Configure" → "System" → "Backup/Restore".
      2. Оберіть "Restore" і завантажте раніше збережений файл .tgz.

      Альтернативно, для синхронізації поточної конфігурації із збереженою на диску використовуйте:

      vim-cmd hostsvc/firmware/sync_config
    • Потрібен діючий пароль root. У разі його відсутності використовуйте доступ через vCenter або SSH-ключи.
  2. Віртуальні машини:

    ovftool vi://root@[ESXI_IP]/[VM_NAME] /path/to/backup/[VM_NAME].ova
    • Потрібна утиліта ovftool, встановлена на адміністративній машині (Windows, macOS або Linux). Завантажити утиліту можна з сайту VMware Customer Connect.
    • Переконайтеся, що на адміністративній машині налаштовано доступ до хоста ESXi, і використовуйте діючий пароль root для виконання команди.
    • Збережіть файл .ova на зовнішньому носії.
  3. Мережеві налаштування:

    esxcli network ip interface list > network_config.txt

    Збережіть вивід у файл.

  4. Ліцензія ESXi:

    vim-cmd vimsvc/license --show

Резервні копії зберігайте на зовнішньому носії, не підключеному до хоста.

Визначення типу інфраструктури

Для вибору оптимального методу скидання потрібно визначити тип хоста:

  • Керується vCenter: У веб-інтерфейсі ESXi в розділі "Summary" вказано vCenter Server.
  • Автономний: Керування здійснюється напряму, без vCenter.

Метод 1: Хост, керований vCenter (Host Profiles)

Метод використовує Host Profiles для хостів, підключених до vCenter. Не потребує перезавантаження. Підтримується VMware.

Вимоги

  • Ліцензія VMware vSphere Enterprise Plus.
  • Доступ до vCenter Server.
  • Інший ESXi хост із відомим паролем root і ідентичною версією ESXi (наприклад, 7.0 Update 3c).
  • Якщо використовується ліцензія Standard або нижче, використовуйте Метод 2 (перевстановлення) або Метод 3 (Nested ESXi).

Кроки

  1. Увійти до vSphere Client (HTML5).
  2. Перейти до розділу "Host Profiles":

    • Оберіть у головному меню "Menu" → "Host Profiles" або перейдіть через "Inventory" → "Hosts and Clusters" → "Host Profiles" (залежно від версії vSphere).
  3. Витягти профіль:

    • Оберіть хост із відомим паролем.
    • Натисніть "Extract Profile from Host".
    • Задайте ім’я профілю, наприклад, Password_Reset_Profile.
    • Дочекайтеся завершення.
  4. Відредагувати профіль:

    • Оберіть профіль, натисніть "Edit Settings".
    • Перейдіть до "Security Configuration" → "Authentication Configuration".
    • У розділі "Local User Accounts" оберіть обліковий запис root.
    • Встановіть новий пароль (не менше 8 символів, включаючи великі літери, цифри, спеціальні символи).
    • Збережіть.
  5. Підготувати цільовий хост:

    • Оберіть хост із забутим паролем.
    • Переведіть у режим обслуговування: правий клік → "Enter Maintenance Mode".
    • Оберіть "Move powered off and suspended virtual machines to other hosts", якщо це можливо.
    • За відсутності DRS або vMotion вимкніть віртуальні машини.
    • Дочекайтеся завершення.
  6. Застосувати профіль:

    • У розділі "Host Profiles" оберіть профіль.
    • Натисніть "Attach/Detach Hosts and Clusters", оберіть хост.
    • Натисніть "Attach", потім "Remediate".
    • Підтвердіть зміни, дочекайтеся завершення (займе приблизно десять хвилин).
  7. Перевірити:

    • Вийти з режиму обслуговування: правий клік → "Exit Maintenance Mode".
    • Увійти з новим паролем через веб-інтерфейс або SSH.
    • Перевірити віртуальні машини:

      vim-cmd vmsvc/getallvms

Примітки

  • Версія ESXi еталонного хоста повинна збігатися з цільовим.
  • За невідповідності конфігурацій можливі помилки. Перевірте журнали vCenter.

Ризики

  • Мінімальні за умови дотримання інструкції.
  • Можливі збої через невідповідність конфігурацій.

Метод 2: Автономний хост — Перевстановлення

Для автономних хостів застосовується перевстановлення ESXi. Метод призводить до втрати конфігурації без резервних копій.

Кроки

  1. Підготовка:

    • Завантажте ESXi з VMware Customer Connect.
    • Створіть завантажувальний USB за допомогою Rufus, Ventoy або:

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

      Переконайтеся, що /dev/sdX — правильний USB-пристрій (перевірте через lsblk або fdisk -l).

    • Виконайте резервне копіювання (див. розділ "Резервне копіювання").
  2. Перевстановлення:

    • Завантажтеся з установчого носія.
    • Оберіть диск, підтвердіть перезапис.
    • Встановіть новий пароль root (рекомендується не менше 8 символів).
    • Дочекайтеся завершення встановлення (приблизно 15 хвилин).
  3. Відновлення:

    • Налаштуйте мережу:

      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

      Якщо хост використовував vSphere Distributed Switch (vDS), відновіть vDS через vCenter або налаштуйте vSphere Standard Switch (vSS).

    • Підключіть сховища:

      esxcli storage core adapter rescan --all

      Для монтування всіх доступних VMFS томів використовуйте:

      esxcli storage filesystem automount

      Якщо автоматичне монтування не спрацювало, перевірте доступні томи і змонтуйте вручну:

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

      Замініть [VOLUME_LABEL] на ім’я тому, отримане з команди list.

    • Імпортувати віртуальні машини:

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

      Переконайтеся, що ovftool виконується на адміністративній машині з доступом до хоста.

    • Відновити ліцензію:

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

      Параметр --label необов’язковий, але рекомендується для ідентифікації ліцензії в інтерфейсі vSphere.

Ризики

  • Втрата конфігурації та віртуальних машин без резервних копій.
  • Потрібне повторне налаштування мережі та сховищ.

Метод 3: Автономний хост — Альтернативний метод

Для автономних хостів, де перевстановлення неможливе, використовується метод із Nested ESXi та Linux VM для зміни конфігураційних файлів. Метод складний, не підтримується VMware, призначений для досвідчених адміністраторів.

Вимоги

  • Nested ESXi VM, що відповідає версії та збірці хоста (наприклад, 7.0 Update 3c). Доступна на VMware Flings.
  • Linux VM (наприклад, Ubuntu 20.04+).
  • Фізичний доступ до сервера.
  • Досвід роботи з Linux.

Кроки

  1. Розгорнути Nested ESXi та Linux VM.
  2. Завантажитися з Linux LiveCD, змонтувати розділи ESXi, скопіювати файли state.tgz і local.tgz.
  3. Передати файли на Nested ESXi, розшифрувати за допомогою /usr/lib/vmware/crypto-util, змінити хеш пароля в базі SQLite.
  4. Упакувати та зашифрувати файли, повернути на хост, перезавантажити.

Ризики

  • Якщо хост використовує Trusted Platform Module (TPM), файли конфігурації прив’язані до TPM-ключів. Заміна файлів без ключів може призвести до непрацездатності. Перевірте:

    esxcli system settings encryption get

    Якщо Encryption Mode вказує TPM, метод може бути непридатним.

  • Неправильні зміни можуть скинути мережеві налаштування, сховища або віртуальні машини.
  • Nested ESXi повинна точно відповідати версії хоста.
  • В ESXi 8.x метод може не працювати через зміни в шифруванні.

Альтернатива

Якщо SSH увімкнено, додайте SSH-ключ:

  • Згенерувати ключ:

    ssh-keygen -t rsa -b 4096
  • Додати ключ до /etc/ssh/keys-root/authorized_keys.

Профілактичні заходи

  1. Документування:

    • Зберігайте паролі в менеджері паролів, наприклад, HashiCorp Vault.
    • Підтримуйте актуальність документації.
  2. SSH-доступ:

    • Увімкнути SSH для поточної сесії:

      esxcli system services enable --id=TSM-SSH
      esxcli system services start --id=TSM-SSH
    • Для автоматичного запуску SSH під час завантаження:

      esxcli system services set --policy=on --id=TSM-SSH
    • Вимкнути таймаут ESXi Shell:

      esxcli system settings advanced set -o /UserVars/ESXiShellTimeOut -i 0
    • Альтернативно, налаштувати через vSphere Client:

      1. Оберіть хост → "Configure" → "Services".
      2. Знайдіть "TSM-SSH", оберіть "Options" → "Start and stop with host".
    • Налаштувати SSH-ключи:

      1. Згенерувати ключ на клієнтській машині:

        ssh-keygen -t rsa -b 4096
      2. Скопіювати публічний ключ (наприклад, ~/.ssh/id_rsa.pub) на хост:

        scp ~/.ssh/id_rsa.pub root@[ESXI_IP]:/etc/ssh/keys-root/authorized_keys
      3. Встановити права доступу:

        ssh root@[ESXI_IP] "chmod 644 /etc/ssh/keys-root/authorized_keys"
    • Зберігати ключі в /etc/ssh/keys-root/authorized_keys.
  3. Active Directory:

    • Приєднати хост до домену через CLI:

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

      Вкажіть [DOMAIN] (наприклад, example.com), [USERNAME] (користувач із правами на приєднання) і [PASSWORD].

    • Альтернативно, використовувати vSphere Client:

      1. Оберіть хост → "Configure" → "Authentication Services".
      2. Натисніть "Join Domain", вкажіть домен і облікові дані.
    • Призначити права доменній групі через vSphere Client:

      1. Оберіть хост або vCenter.
      2. Перейдіть до "Permissions".
      3. Натисніть "Add", оберіть групу (наприклад, DOMAIN\GroupName), призначте роль (наприклад, "Administrator").
    • Для автоматизації використовувати PowerCLI:

      New-VIPermission -Entity (Get-VMHost) -Principal "DOMAIN\GroupName" -Role Admin
  4. Моніторинг:

    • Використовуйте vRealize Operations або Zabbix.
    • Налаштуйте сповіщення про збої.
  5. Резервне копіювання:

    • Автоматизувати:

      vim-cmd hostsvc/firmware/backup_config

      Завантажуйте файл за URL і зберігайте на зовнішньому носії.