Скидання пароля користувача root в ESXi 7.x
Іноді виникають ситуації, коли з тих чи інших причин авторизуватися в консолі управління ESXi не представляється можливим через відсутність актуального пароля. Це може статися внаслідок злому системи, системного збою, втрати пароля або в разі якщо вам у спадок передали ESXi без документації та належного адміністративного контролю. Це неприємна ситуація і з нею доведеться щось робити. Можливо, не відразу, а коли щось піде не так і знадобиться втручатися в роботу системи, яка досі нормально функціонує. Для таких випадків і написана ця інструкція.
Існує кілька способів скидання пароля. Однак наведений у цій статті - універсальний і підійде не тільки для 7.х версій, а й для більш ранніх. Він випробуваний на практиці і є в переважній більшості випадків робочим. Отже:
Для початку нам необхідно завантажитися з будь-якого Live CD. Це може бути інсталяційний образ Ubuntu, або, як у нашому випадку – Finnix . Це debian-based дистрибутив із широкими можливостями для діагностики та аварійного відновлення.
Після завантаження ви побачите запрошення консолі:

У тому разі, якщо ваш сервер розташований віддалено і ви під'єднані до нього через IP-KVM, працювати в такому режимі не дуже зручно через високий час відгуку консолі. Щоб цього не терпіти, можна підняти ssh-сервер. Якщо ж це не є проблемою, ви можете пропустити цей крок
passwd
# підіймаємо ssh-сервер
service ssh star
Далі можна підключитися до сервера, використовуючи ваш улюблений ssh-клієнт або з консолі:
Тепер необхідно визначити, який диск містить необхідний нам розділ. Для цього спершу визначимо, які саме диски в нас є.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 377.2M 1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs
/run/live/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 містить такий розділ, давайте подивимося на нього ближче:

Наша мета - розділ, який починається з сектора 8224 і має розмір 250МБ. Саме він містить дані, які нам потрібні
Для продовження створимо 2 директорії, одну для монтування диска і другу для даних, які необхідно відредагувати.
Монтуємо знайдений розділ
mount /dev/nvme0n1p5 /mnt/vmware
Усередині багато чого всякого, але нам потрібен конкретний файл

Його необхідно розпакувати в раніше створену директорію
tar -xf /tmp/vmware/local.tgz -C /tmp/vmware/
rm /tmp/vmware/local.tgz
Тепер якщо ми перейдемо в /tmp/vmware/ і подивимося її вміст, то виявимо там знайому нам директорію etc.
Далі необхідно відредагувати файл shadow і видалити з нього хеш пароля root. Таким чином в ESXi після нашої маніпуляції буде думати, що пароль користувача порожній.
Робити це треба акуратно. Необхідно видалити вміст між першою і другою двокрапкою

і має вийти ось так

Зберігаємо файл кнопкою F3. На цьому найвідповідальніша частина завершена. Далі необхідно запакувати все і покласти назад, де взяли.
tar -czf local.tgz etc
tar -czf state.tgz local.tgz
mv state.tgz /mnt/vmware/
Відмонтуємо диск ESXi і перезавантажуємося.
reboot
Після перезавантаження заходимо на web-інтерфейс ESXi під користувачем root і порожнім паролем і змінюємо його на потрібний нам штатними засобами через верхнє праве меню.
Все! Мета досягнута! Рекомендуємо зберегти новий пароль і більше не втрачати його!