Content

Скидання пароля користувача root в ESXi 7.x

Іноді виникають ситуації, коли з тих чи інших причин авторизуватися в консолі управління ESXi не представляється можливим через відсутність актуального пароля. Це може статися внаслідок злому системи, системного збою, втрати пароля або в разі якщо вам у спадок передали ESXi без документації та належного адміністративного контролю. Це неприємна ситуація і з нею доведеться щось робити. Можливо, не відразу, а коли щось піде не так і знадобиться втручатися в роботу системи, яка досі нормально функціонує. Для таких випадків і написана ця інструкція.

Існує кілька способів скидання пароля. Однак наведений у цій статті - універсальний і підійде не тільки для 7.х версій, а й для більш ранніх. Він випробуваний на практиці і є в переважній більшості випадків робочим. Отже:

Для початку нам необхідно завантажитися з будь-якого Live CD. Це може бути інсталяційний образ Ubuntu, або, як у нашому випадку – Finnix . Це debian-based дистрибутив із широкими можливостями для діагностики та аварійного відновлення.

Після завантаження ви побачите запрошення консолі:

У тому разі, якщо ваш сервер розташований віддалено і ви під'єднані до нього через IP-KVM, працювати в такому режимі не дуже зручно через високий час відгуку консолі. Щоб цього не терпіти, можна підняти ssh-сервер. Якщо ж це не є проблемою, ви можете пропустити цей крок

# задамо пароль root для live системи
passwd
# підіймаємо ssh-сервер
service ssh star

Далі можна підключитися до сервера, використовуючи ваш улюблений ssh-клієнт або з консолі:

ssh root@1.2.3.4

Тепер необхідно визначити, який диск містить необхідний нам розділ. Для цього спершу визначимо, які саме диски в нас є.

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
/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 містить такий розділ, давайте подивимося на нього ближче:

fdisk -l /dev/nvme0n1


Наша мета - розділ, який починається з сектора 8224 і має розмір 250МБ. Саме він містить дані, які нам потрібні

Для продовження створимо 2 директорії, одну для монтування диска і другу для даних, які необхідно відредагувати.

mkdir /mnt/vmware && mkdir /tmp/vmware

Монтуємо знайдений розділ

mount /dev/nvme0n1p5 /mnt/vmware

Усередині багато чого всякого, але нам потрібен конкретний файл

img

Його необхідно розпакувати в раніше створену директорію

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 і видалити з нього хеш пароля 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

Після перезавантаження заходимо на web-інтерфейс ESXi під користувачем root і порожнім паролем і змінюємо його на потрібний нам штатними засобами через верхнє праве меню.
Все! Мета досягнута! Рекомендуємо зберегти новий пароль і більше не втрачати його!