Сброс пароля пользователя root в ESXi 7.x
⚠️ ВАЖНОЕ УВЕДОМЛЕНИЕ О СОВМЕСТИМОСТИ
Этот метод сброса пароля root зависит от версии ESXi и не поддерживается во всех выпусках.
Поддерживаемые версии:
- ESXi 6.0, 6.5, 6.7 (все сборки)
- ESXi 7.0 (GA)
- ESXi 7.0 Update 1
- ESXi 7.0 Update 2
Не поддерживается:
- ESXi 7.0 Update 3 и позднее (архив конфигурации
local.tgzзашифрован и хранится какlocal.tgz.ve) - ESXi 8.0 и поздние версии
Причина: Начиная с ESXi 7.0 Update 3, VMware ввела шифрование архивов конфигурации, что предотвращает прямую модификацию файла /etc/shadow через LiveCD.
Для зашифрованных версий (7.0 U3+, 8.0+), используйте альтернативные методы:
- Использование
crypto-utilна другом хосте ESXi (требует создания вложенной ВМ ESXi) - Восстановление через Host Profiles (требует vCenter)
- Переустановка ESXi с сохранением хранилищ VMFS (последняя мера)
Проверьте установленную версию ESXi перед продолжением.
Иногда по той или иной причине вы можете не иметь возможности аутентифицироваться в консоли управления ESXi, поскольку у вас нет актуального пароля. Это может быть связано со взломом системы, сбоем системы, утерей пароля или если вы получили ESXi в наследство без документации или надлежащего административного контроля. Это неприятная ситуация, и с ней нужно что-то делать. Может быть, не сразу, но когда что-то пойдёт не так и вам нужно будет вмешаться в систему, которая до этого момента функционировала нормально. Эта инструкция написана именно для таких случаев.
Существует несколько способов сброса пароля. Однако тот, что описан в этой статье, является универсальным и будет работать не только для версий 7.x, но и для более ранних. Он проверен на практике и работает в большинстве случаев. Итак, начнём.
Подготовка
Сначала нам нужно загрузиться с любого Live CD. Это может быть установочный образ Ubuntu или, как в нашем случае, Finnix. Это дистрибутив на основе Debian с широкими возможностями диагностики и аварийного восстановления.
После загрузки вы увидите приглашение консоли:

В случае если ваш сервер находится удалённо и вы подключены к нему через IP-KVM, работать в этом режиме не очень удобно из-за высокого времени отклика консоли. Чтобы избежать этого, можно настроить SSH-сервер. Если это не проблема, данный шаг можно пропустить.
# задаём пароль root для live-системы passwd # запускаем ssh-сервер service ssh start
После этого можно подключиться к серверу с помощью любимого SSH-клиента или из консоли:
ssh root@1.2.3.4
Поиск раздела ESXi
Теперь нам нужно определить, на каком диске находится нужный нам раздел. Для этого сначала определим, какие диски у нас есть.
root@0:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 377.2M 1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs sda 8:0 1 3.6T 0 disk └─sda1 8:1 1 3.6T 0 part sdb 8:16 1 3.6T 0 disk └─sdb1 8:17 1 3.6T 0 part sr0 11:0 1 455M 0 rom /run/live/medium zram0 252:0 0 62.8G 0 disk [SWAP] nvme1n1 259:0 0 476.9G 0 disk └─nvme1n1p1 259:2 0 476.9G 0 part nvme0n1 259:1 0 476.9G 0 disk ├─nvme0n1p1 259:3 0 4M 0 part ├─nvme0n1p2 259:4 0 4G 0 part ├─nvme0n1p3 259:5 0 469.6G 0 part ├─nvme0n1p5 259:6 0 250M 0 part ├─nvme0n1p6 259:7 0 250M 0 part ├─nvme0n1p7 259:8 0 110M 0 part ├─nvme0n1p8 259:9 0 286M 0 part └─nvme0n1p9 259:10 0 2.5G 0 part
Наш основной критерий поиска — раздел диска размером 250 МБ. Как видим, диск nvme0n1 содержит такой раздел, рассмотрим его подробнее:
fdisk -l /dev/nvme0n1

Наша цель — раздел, начинающийся с сектора 8224 и имеющий размер 250 МБ. Именно этот раздел содержит нужные нам данные.
Извлечение файлов конфигурации
Для продолжения создадим 2 директории: одну для монтирования диска, другую для данных, которые нам нужно отредактировать.
mkdir /mnt/vmware && mkdir /tmp/vmware
Монтируем найденный раздел
mount /dev/nvme0n1p5 /mnt/vmware
Внутри много всего, но нам нужен конкретный файл

Его нужно распаковать в ранее созданную директорию
tar -xf /mnt/vmware/state.tgz -C /tmp/vmware/ tar -xf /tmp/vmware/local.tgz -C /tmp/vmware/ rm /tmp/vmware/local.tgz
Теперь, если перейти в /tmp/vmware/ и просмотреть его содержимое, мы найдём там знакомую директорию etc.
Редактирование файла Shadow
Далее нам нужно отредактировать файл shadow и удалить из него хэш пароля root. Таким образом ESXi после наших манипуляций будет считать, что пароль пользователя пуст.
nano /tmp/vmware/etc/shadow
Это нужно сделать аккуратно. Необходимо удалить содержимое между первым и вторым двоеточием

и это должно выглядеть вот так

Восстановление и перезагрузка
Сохраните файл клавишей F3. На этом самая важная часть завершена. Далее нужно упаковать всё обратно и положить туда, где нашли.
cd /tmp/vmware/ tar -czf local.tgz etc tar -czf state.tgz local.tgz mv state.tgz /mnt/vmware/
Размонтируем диск ESXi и перезагружаемся.
umount /mnt/vmware/ reboot
После перезагрузки войдите в веб-интерфейс ESXi под пользователем root с пустым паролем и смените его на нужный стандартными средствами через меню в правом верхнем углу.
Возможные проблемы и решения
- Ошибка монтирования раздела: Убедитесь, что вы указали правильный путь к системному диску. Выполните
lsblkдля отображения структуры разделов. - Файл Shadow не найден: Проверьте правильность пути
/tmp/etc/shadow. Убедитесь, что архивыstate.tgzиlocal.tgzбыли успешно распакованы. - Пароль не сброшен: Проверьте, что изменения сохранены и файлы успешно пересобраны и перемещены на исходное место.
Вот и всё! Цель достигнута! Рекомендуем сохранить новый пароль и больше никогда его не терять!