Сброс пароля пользователя root в ESXi 7.x

Иногда по тем или иным причинам вы не можете авторизоваться в консоли управления ESXi, поскольку у вас нет актуального пароля. Это может произойти из-за взлома системы, сбоя системы, потери пароля или если вы унаследовали ESXi без документации или надлежащего административного контроля. Это неприятная ситуация, и с ней придется что-то делать. Может быть, не сразу, но когда что-то пойдет не так и вам придется вмешиваться в работу системы, которая до сих пор функционировала нормально. Эта инструкция написана именно для таких случаев.

Резервное копирование

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

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

    vim-cmd hostsvc/firmware/backup_config
    • Команда создаёт резервную копию конфигурации хоста. После выполнения команды в выводе будет указан URL (например, http://<ESXI_IP>/downloads/<backup_file>.tgz).
    • Скачайте файл по этому URL через веб-браузер или утилиту, например wget или curl, и сохраните его на внешнем носителе:

      wget http://<ESXI_IP>/downloads/<backup_file>.tgz -O /path/to/backup/<backup_file>.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 и хранить на внешнем носителе.