Скидання пароля користувача 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були успішно розпаковані. - Пароль не скинуто: Перевірте, що зміни збережено і файли успішно перезібрано та переміщено на вихідне місце.
Ось і все! Мету досягнуто! Рекомендуємо зберегти новий пароль і більше ніколи його не втрачати!