Как восстановить забытый пароль root в ESXi 7.x и ESXi 8.x
Если вы забыли пароль root для ESXi, VMware рекомендует переустановить ESXi. В небольших средах без автоматизированного развертывания и централизованных профилей вам потребуется настроить всё вручную. В качестве альтернативы, вы можете воспользоваться неофициальным методом сброса пароля. Если вы управляете ESXi через vCenter, вы можете сбросить пароль, используя привилегированную учётную запись в vCenter. Кроме того, принадлежность хоста ESXi к домену AD может быть большим подспорьем. Если эти возможности недоступны, вы не сможете сбросить пароль автономного хоста, поскольку система хранит хэш пароля в зашифрованном файле конфигурации, который невозможно расшифровать без прав root. По этой причине старый метод загрузки хоста из Linux и непосредственного редактирования файла конфигурации больше не работает после ESXi 6.x.
Альтернативное решение с использованием виртуального хостинга
Данный метод предполагает настройку второго (виртуального) хоста и перенос ключа с основного хоста на него. Это позволяет извлечь конфигурацию и изменить хеш пароля в базе данных SQLite. Для этого необходимо смонтировать загрузочные носители как физического, так и виртуального хостов, так как перезаписать файл конфигурации во время работы системы невозможно, и она отклонит изменения при следующей загрузке. Для доступа к конфигурации ESXi подходит система Linux; проще всего использовать Live CD.
Установка виртуального ESXi
Чтобы отредактировать конфигурацию ESXi физического хоста, вам понадобится другой хост ESXi с точно такой же версией, для которого вы не забыли пароль.
Создайте новую виртуальную машину, выберите «Другое» в качестве гостевой операционной системы и выберите версию ESXi, которую вы хотите установить.
Затем перейдите на страницу «Настройка параметров», в разделе «Виртуальное оборудование» => «ЦП» включите опцию «Предоставить аппаратную виртуализацию гостевой ОС».
Наконец, смонтируйте установочный ISO-файл ESXi как DVD-привод и включите опцию «Подключаться при включении питания». Сначала необходимо загрузить этот файл на хост ESXi через «Хранилище» => «Обозреватель хранилищ данных» => «Загрузить».
Резервное копирование state.tgz
Следующий шаг — резервное копирование файла state.tgz на физическом хосте. В этом файле хранятся постоянные данные конфигурации, необходимые хосту для восстановления состояния при следующей загрузке.
Этот файл содержит хэш забытого пароля и ключ, используемый для шифрования файла local.tgz внутри него.
Если вы загрузили хост с USB (не рекомендуется VMware), отключите его и подключите к компьютеру с Windows. Если хост загружается с внутреннего диска, загрузите его в среду Linux с внешнего диска и смонтируйте раздел 6, отформатированный в FAT, в /mnt, например:
монтировать /dev/sdb6 /mnt
Затем файл /mnt/bootbank/state.tgz на локальный диск (если доступен для записи) или на сетевой диск с помощью стандартных инструментов Linux, таких как SCP-1811 Или фтп Копировать. Также рекомендуется сделать резервную копию этого файла.
Копировать state.tgz в виртуальный ESXi
Далее копируем файл резервной копии в каталог /tmp Перенесите виртуальный хост ESXi, например, с помощью SCP-1811. Если файл находится на компьютере под управлением Windows, команда может выглядеть так:
scp "C:\temp\state.tgz" [email protected]:/tmp/state.tgzЗатем перейдите в каталог /tmp Перейдите на целевой хост и извлеките файл state.tgz:
tar -zxvf state.tgzИмпорт ключа в state.tgz в виртуальной машине ESXi
Затем копируем, расшифровываем и редактируем файл state.tgz виртуального хоста, включая ключи физического хоста. Для этого введите следующие команды в оболочке виртуального хоста:
cp /bootbank/state.tgz /tmp/state.tgz cd /tmp tar -xzf state.tgz rm state.tgz vmtar -x local.tgz -o local.tar tar -xf local.tar rm local.tar cp /tmp/encryption.info etc/vmware/ vmtar -c local.tar etc/vmware -o local.tgz mv local.tgz state-mod.tgzЭти команды извлекают зашифрованный файл state.tgz виртуального хоста, расшифровывают его и создают измененный локальный пакет конфигурации (local.tgz).

Отредактируйте файл конфигурации на целевом хосте.
Далее файл /tmp/state-mod.tgz Скопируйте на свой компьютер:
scp [email protected]:/tmp/state-mod.tgz "C:\temp\state-mod.tgz""Затем отключите виртуальный хост, чтобы освободить его диск VMDK.
Монтирование целевого хоста VMDK в виртуальную машину Linux
Теперь подключите VMDK-файл этой виртуальной машины к виртуальной машине Linux и включите её. В терминале гостевой системы выполните команду
fdisk -lОн должен отобразить два раздела загрузочного банка с номерами 5 и 6.

Перенесите state-mod.tgz в виртуальную машину Linux и замените state.tgz
Чтобы передать файл state-mod.tgz который вы создали ранее, с вашего компьютера с Windows (путь C:\temp(на машину Linux) каталог /home/томас) с IP-адресом 10.0.7.140Вы можете использовать следующую команду в терминале Windows или PowerShell:
Описание:
SCP-1811Это безопасный инструмент для копирования файлов между системами.томас@10.0.7.140То есть, имя пользователяТомасНа машине Linux с указанным IP-адресом./home/thomas/state-mod.tgzПуть назначения файла в Linux.
После выполнения этой команды система запросит у вас пароль пользователя. Томас и после его ввода начнется передача файла.
Если вы используете обычный терминал в Windows и команду SCP-1811 Он не распознается, вам необходимо установить OpenSSH Client или использовать такие инструменты, как PuTTY (pscp).
Если хотите, я также могу написать вам руководство по использованию этих инструментов.
scp "C:\temp\state-mod.tgz" [email protected]:/home/thomas/state-mod.tgzЗатем смонтируйте разделы загрузочного банка и замените файл state.tgz на state-mod.tgz:
sudo su mkdir -p /bootbank1 mkdir -p /bootbank2 монтировать /dev/sdc5 /bootbank1 монтировать /dev/sdc6 /bootbank2 cp /home/thomas/state-mod.tgz /bootbank1/state.tgz cp /home/thomas/state-mod.tgz /bootbank2/state.tgz размонтирование /bootbank1 размонтирование /bootbank2Затем отсоедините VMDK-файл от виртуальной машины Linux и перезагрузите виртуальный хост. Теперь конфигурация будет загружена с расшифрованным ключом физического хоста.
На этом этапе скопируйте файл физического хоста state.tgz, скопированный ранее, в каталог /tmp Перенос виртуального хостинга.
Затем расшифруйте находящийся внутри него файл local.tgz.ve:
cd /tmp cp /bootbank/state.tgz ./ tar -xzf state.tgz rm state.tgz vmtar -x local.tgz.ve -o local.tgzЗамена хеша пароля в базе данных конфигурации ESXi
Теперь займёмся главным делом — заменой хэша пароля. Для начала извлечём файл local.tgz:
tar -zxvf local.tgzПосле распаковки в папке /tmp появятся три каталога: .ssh, etc/ и var/. Соответствующая база данных конфигурации находится по следующему пути:
/tmp/var/lib/vmware/configstore/backup/current-store-1В этой базе данных вам нужно заменить хеш забытого пароля root на новый хеш, который вам известен. Поскольку файл представляет собой базу данных SQLite, вы можете использовать инструмент sqlite3 Отредактируйте его. Вы можете увидеть текущий хеш пароля root с помощью следующей команды:
/usr/lib/vmware/sqlite/bin/sqlite3 /tmp/var/lib/vmware/configstore/backup/current-store-1 "выберите * из конфигурации, где Component='esx', ConfigGroup = 'authentication', Name = 'user_accounts' и Identifier = 'root'""
Чтобы сгенерировать новый хеш, вы можете использовать следующую команду:
openssl пароль -6Или воспользуйтесь онлайн-генератором.
Затем вставьте новый хеш в базу данных следующим образом:
/usr/lib/vmware/sqlite/bin/sqlite3 /tmp/var/lib/vmware/configstore/backup/current-store-1 "update config set UserValue="name":"root","password_hash":"$6$s6ic82Ik$ER28x38x.1umtnQ99Hx9z0ZBOHBEuPYneedI1ekK2cwe/jIpjDcBNUHWHw0LwuRYJWhL3L2ORX3I5wFxKmyki1","description":"Администратор", где Component="esx" и ConfigGroup="authentication" и Name="user_accounts" и Identifier="root""
Пересборка state.tgz для физического хоста
После замены хеша пароля необходимо заново создать файл state.tgz из исходных компонентов, найденных в /tmp Вы извлекли и пересобрали базу данных. Новый файл будет содержать изменённую базу данных:
vmtar -c и т. д. .ssh var -o local.tgz vmtar -c local.tgz -o local.tgz.ve tar -czf state-recover.tgz local.tgz.veВам необходимо перенести файл state-recover.tgz на виртуальную машину Linux. Если ESXi установлен на USB-накопителе, вы можете просто смонтировать его в виртуальную машину Linux. Однако, если ESXi нормально загружается с диска, загрузите хост с USB-накопителя с дистрибутивом Linux, например, Ubuntu.
Затем смонтируйте разделы, как в шаге 5, и замените файл state.tgz на state-recover.tgz:
sudo su mkdir -p /bootbank1 mkdir -p /bootbank2 монтировать /dev/sdb5 /bootbank1 монтировать /dev/sdb6 /bootbank2 cp /root/state-recover.tgz /bootbank1/state.tgz cp /root/state-recover.tgz /bootbank2/state.tgz размонтировать /bootbank1 размонтировать /bootbank2После загрузки физического хоста с новой конфигурацией вы снова сможете войти в систему как пользователь root.
Примечание: Если вы забыли пароль root вашего хоста ESXi и не можете сбросить его через vCenter или учётную запись AD, единственный официальный вариант — переустановка. Однако существует неофициальный метод, использующий второй хост для редактирования конфигурации первого.









