В официальной документации VMware указано, что полная переустановка ESXi – единственный официально поддерживаемый способ сбросить пароль root (https://kb.vmware.com/s/article/1317898): Reinstalling the ESXi host is the only supported way to reset a password on ESXi
. Либо вы можете использовать Host Profiles для сброса пароля (требуется vCenter и лицензия Enterprise Plus).
Но при переустановке вы полностью потеряете конфигурацию (настройки) вашего хоста ESXi (файлы данных и конфигурации виртуальных машин останутся на VMFS/NFS хранилище, и вы сможете быстро импортировать их на хосте после переустановки).
На самом деле, вы можете сбросить пароль root на VMware ESXi, если загрузите ваш хост с помощью любого загрузочного/rescue диска с Linux и это не трудно.
Итак, если вы забыли пароль root для подключения и не можете аутентифицироваться под root через DCUI или веб интерфейс VMware Host Client:
Authentication failed Invalid login or password.
Сброс пароля ESXi с помощью загрузочного диска Linux
ESXi хранит пароли (а точнее хэши) пользователей в файле /etc/shadow, который хранится в архиве local.tgz, который заархивирован в state.tgz. Теоретически, вы можете получить кэш пароля root из этого файла и расшифровать его, но на практике эта задача выполнима только для простых паролей. Поэтому ваша задача – установить пустой текущий пароль для root в файле shadow, или заменить его на хэш известного пароля.
Загрузите ваш хосте ESXi с любого LiveCD с Linux и откройте консоль.
Выведите список разделов на диске:
# fdisk –l
Нам нужны разделы /dev/sda5 (в терминах VMware называется bootbank
) и /dev/sda6 (содержит altrbootbank
) размером 1 Гб в ESXi 7.x (в предыдущих версиях размер этих разделов был 250 Мб).
Сначала нужно сбросить пароль в конфигурации ESXi на /dev/sda5. Создайте точку монтирования и каталог для временных файлов:
# mkdir /mnt/sda5
# mkdir /mnt/sda6
# mkdir /temp
Смонтируйте раздел /dev/sda5:
# mount /dev/sda5 /mnt/sda5
Скопируйте файл state.tgz с раздела sda5:
# cp /mnt/sda5/state.tgz /temp
# cd /temp
Распакуйте архив state.tgz:
# tar xzf state.tgz
Внутри еще один архив local.tgz, распакуйте и его:
# tar xzf local.tgz
В текущем каталоге появится папка etc.
Отредактируйте файл shadow с помощью любого текстового редактора:
# nano /temp/etc/shadow
В этом файле хранятся хэши паролей.
Чтобы удалить текущий пароль и установить пустой пароль для root, сотрите значение хэша. Должно получится так:
Сохраните изменения в файле, удалите старые tgz архивы и перепакуйте все заново
# rm *.tgz
# tar czf local.tgz etc
# tar czf state.tgz local.tgz
Замените файл state.tgz на разделе sda5 ESXi:
# mv state.tgz /mnt/sda5
Отмонтируйте раздел:
# umount /mnt/sda5
Аналогичным образом задайте пустой пароль в файле passwd и на разделе sda6 (на этом разделе хранится резервная копия образа ESXi — altbootbank).
Теперь можно перезагрузить хост ESXi и извлечь загрузочную флешку/образ. Теперь вы сможете подключиться к ESXi с пустым паролем root.
Этот метод сброса пароля применим для всех версий ESXi (5.x, 6.x, 7.x и 8.x), в том числе к бесплатному VMware Hypervisor.
Сбросить пароль root в ESXi с помощью VMware Host Profiles
Если у вас развернут vCenter и на хостах установлены лицензии vSphere Enterprise Plus, вы можете сбросить пароль root на любом управляемом хосте с помощью VMware Host Profiles. В этом сценарии для применения настроек профиля VMware (и нового пароля root) к хосту ESXi используется привилегированный пользователь vpxa, которые добавляется при подключении хоста к vCenter. Этот способ позволяет сбросить пароль root без перезагрузки хоста ESXi.
- Подключитесь к вашему vCenter и перейдите в раздел Policies and Profiles -> Host Profiles -> Extract Host Profile;
- Выберите ваш ESXi хост и укажите имя профиля, под которым нужно сохранить его настройки;
- Щелкните по профили и выберите Edit Host Profile;
- Разверните следующую секцию конфигурации: Security and Services -> Security Settings -> Security -> User Configuration -> root;
- Задайте новый пароль root в разделе Fixed password configuration;
- Теперь нужно применить этот профиль к вашему хосту. Рекомендуется перевести хост в режим обслуживания (Maintenance Mode -> Enter Maintenance) и переместить все нагрузки и виртуальные машины на другие хосты;
- Теперь назначьте профиль на хост (Host profiles -> Attach Host Profile);
- Теперь перейдите в раздел Host Profilex, выберите ваш профиль и щелкните Remediate;
- Чтобы применить настройки из профиля (в том числе новый пароль), нажмите Remediate еще раз;
- Пароль root на вашем ESXi будет сброшен, и вы можете вывести хост из режима обслуживания.