ESXi’de root parolasının unutulması, özellikle tek başına çalışan sunucularda önemli bir sorun oluşturur. vCenter ya da Active Directory entegrasyonu mevcutsa parola hızlı bir şekilde sıfırlanabilir. Ancak bu seçenekler yoksa, ESXi’nin şifreli yapılandırma yapısı nedeniyle root parolasını doğrudan değiştirmek mümkün değildir.
Bu nedenle parola kurtarma işlemi, yapılandırma paketinin doğru şekilde açılıp yeniden oluşturulmasına dayanır. Bu yapıya hâkim değilsen, önce Sunucunuzda VMware ESXi Kurulumu ve Yapılandırma rehberine göz atmak, ESXi’in çalışma mantığını anlamanı kolaylaştırır.
Bu yazıda yeniden kurulum gerekmeden root parolasını kurtarma yöntemlerini inceleyeceğiz.
Hazırlık İçin Gerekli Kaynaklar
- Root parolasının unutulduğu fiziksel ESXi host
- Bir Linux makinesi
- Fiziksel host ile aynı sürümde kurulmuş Nested ESXi VM
- Fiziksel hostun yüklü olduğu medyaya erişim
ESXi Root Parola Kurtarma
Çözümün temel mantığı, fiziksel hosttan çıkarılan state.tgz dosyasının aynı sürümde kurulmuş bir sanal ESXi üzerinde açılabilir hâle getirilmesidir. Bu işlemi yapabilmek için fiziksel hosttaki encryption.info dosyası nested ESXi ortamına eklenir. Böylece sanal ESXi, fiziksel hostun şifreleme anahtarlarına erişme yeteneği kazanır.
Nested ESXi Ortamını Hazırlama
Nested bir ESXi hazırlamak için öncelikle fiziksel host ile aynı sürümde çalışan bir sanal ESXi kurmamız gerekir. Bunun için yeni bir sanal makine oluşturalım ve misafir işletim sistemi olarak fiziksel hostla aynı ESXi sürümünü seçelim.
ISO dosyasını sanal CD sürücüsüne ekleyerek kurulumu standart ESXi yükleme adımlarıyla tamamlayalım. Nested ortamda yapılacak işlemler büyük ölçüde CLI üzerinden ilerleyeceği için, dilerseniz VMware ESXi En Sık Kullanılan Komutlar yazısına göz atarak komut yapısını inceleyebilirsiniz.
Fiziksel Hosttan state.tgz Dosyasını Alma
ESXi’nin kalıcı yapılandırmaları state.tgz dosyasında yer aldığı için işe başlamadan önce bu dosyayı mutlaka dışarı aktarılması gerekir.
BOOTBANK türündeki bölümü mount edelim ve içindeki state.tgz dosyasını kopyalayalım. Bölüm yapısını görmek için fdisk -l komutunu çalıştırıp, bootbank olarak kullanılan 5. veya 6. bölümü bağlayalım.
mount /dev/sdb6 /mnt
cp /mnt/bootbank/state.tgz /root/state.tgz

state.tgz Dosyasını Nested ESXi’ye Aktarma
Fiziksel hosttan aldığımız state.tgz dosyasını nested ESXi üzerinde işlemek için önce dosyayı sisteme aktaralım
scp /path/state.tgz root@NESTED_ESXI:/tmp/state.tgz
Nested ESXi’ye bağlandıktan sonra /tmp dizinine geçip paketi açalım
cd /tmp
tar -zxvf state.tgz
rm -f state.tgz
Bu işlemlerden sonra fiziksel hosta ait local.tgz ve ilgili meta veriler nested ESXi üzerinde görünür hâle gelir.

Nested ESXi’i Fiziksel Host Anahtarıyla Çalıştırma
Nested ESXi’in, fiziksel hosttaki şifreli yapılandırmayı çözebilmesi için kendi state.tgz paketini fiziksel hostun encryption.info dosyasıyla yeniden oluşturmamız gerekir.
mkdir /tmp/a
cd /tmp/a
tar xzf /bootbank/state.tgz
crypto-util envelope extract --aad ESXConfiguration local.tgz.ve local.tgz
rm -f local.tgz.ve encryption.info
cp /tmp/encryption.info /tmp/a/encryption.info
tar -cvf /tmp/state-mod.tgz encryption.info local.tgz
Bu işlemle nested ESXi’in mevcut state paketini açmış, şifreli yapıdan local.tgz dosyasını çıkarmış, kendi encryption.info dosyasını silip fiziksel hosttaki anahtarla değiştirmiş ve yeni bir state-mod.tgz oluşturmuş oluruz.
Nested ESXi’in Bootbank Alanını Güncelleme
Nested ESXi’in VMDK diskini bir Linux makineye bağlayalım ve bootbank bölümlerini güncelleyelim:
fdisk -l
mkdir -p /bootbank1 /bootbank2
mount /dev/sdc5 /bootbank1
mount /dev/sdc6 /bootbank2
cp /path/state-mod.tgz /bootbank1/state.tgz
cp /path/state-mod.tgz /bootbank2/state.tgz
umount /bootbank1
umount /bootbank2
Sonrasında nested ESXi VM’yi yeniden başlatalım. Bu işlemden sonra nested ortam, fiziksel host ile aynı encryption.info dosyasını kullanır hâle gelir ve artık fiziksel hostun state.tgz paketini sorunsuz bir şekilde çözebilir.
state.tgz İçeriğini Nested ESXi’de Açma
Artık fiziksel hosttan aldığımız orijinal state.tgz dosyasını nested ESXi üzerinde çözelim. Önce dosyayı geçici dizine kopyalayalım ve açalım.
cd /tmp
cp /bootbank/state.tgz ./
tar -zxvf state.tgz
rm -f state.tgz
Ardından şifreli yapıdan gerçek local.tgz dosyasını çıkaralım.
crypto-util envelope extract --aad ESXConfiguration local.tgz.ve local.tgz
rm -f local.tgz.ve
Bu işlemlerden sonra fiziksel ESXi’e ait gerçek local.tgz paketi elimizde olur. Root parolasının hash değerine ulaşmak için bu paketi de açmamız gerekir.
ConfigStore İçindeki Root Parolasını Güncelleme
Önce local.tgz dosyasını açalım
tar -zxvf local.tgz
Bu işlemden sonra /tmp altında .ssh, etc/ ve var/ dizinleri oluşur. Root parolasının bulunduğu ConfigStore veritabanı şu dizindedir.
/tmp/var/lib/vmware/configstore/backup/current-store-1
Kayıtları görmek için aşağıdaki sorguyu çalıştıralım:
/usr/lib/vmware/sqlite/bin/sqlite3 \
/tmp/var/lib/vmware/configstore/backup/current-store-1 \
"SELECT * FROM config WHERE Component='esx' AND ConfigGroup='authentication' AND Name='user_accounts' AND Identifier='root'"

Şimdi yeni bir SHA512 hash oluşturalım
openssl passwd -6
Üretilen hash’i alıp veritabanındaki password_hash alanını güncelleyelim.
/usr/lib/vmware/sqlite/bin/sqlite3 \
/tmp/var/lib/vmware/configstore/backup/current-store-1 \
"UPDATE config SET UserValue='{\"name\":\"root\",\"password_hash\":\"YENI_HASH\",\"description\":\"Administrator\"}' WHERE Component='esx' AND ConfigGroup='authentication' AND Name='user_accounts' AND Identifier='root'"
Son olarak ilk SELECT sorgusunu yeniden çalıştırarak yeni hash’in doğru şekilde kaydedildiğini kontrol edelim.
Yeni state Paketini Oluşturup Fiziksel Hosta Yazma
Hash değişikliğinden sonra yapılandırmayı yeniden paketleyelim:
rm -f local.tgz
tar -cvf /tmp/local.tgz .ssh/ etc/ var/
tar -cvf /tmp/state-recover.tgz encryption.info local.tgz
Ardından dosyayı Linux makineye aktaralım ve fiziksel ESXi’i Live ISO ile açıp bootbank bölümüne yazalım:
mount /dev/sdb5 /mnt
cp ~/state-recover.tgz /mnt/state.tgz
chmod 755 /mnt/state.tgz
umount /mnt
İkinci bootbank varsa aynı işlemi tekrar edelim. Fiziksel hostu yeniden başlattığımızda:
Yeni root parolasıyla giriş yapabiliriz ve tüm ayarlar ile sanal makineler olduğu gibi korunur.
Sık Sorulan Sorular
local.tgz.ve dosyasını nasıl şifresiz açarım?
local.tgz.ve ancak fiziksel ESXi’ye ait encryption.info dosyası nested ESXi’ye entegre edildikten sonra crypto-util komutuyla çözülebilir. Bu anahtar olmadan dosya tamamen şifreli kaldığı için açılması mümkün değildir.
Doğru anahtar eklendiğinde crypto-util içeriği local.tgz formatına dönüştürür.
ConfigStore sqlite veritabanı neden kilit hatası veriyor?
ConfigStore, ESXi çalışırken sistem tarafından kilitli tutulduğu için canlı ortamda düzenleme yapılamaz. Bu yüzden sqlite3 komutu root parolasını değiştirmeye çalıştığınızda hata verir. İşlem ancak nested ESXi üzerinde çıkarılmış offline ConfigStore kopyasında yapılabilir.
ESXi root şifresini unutunca nested ESXi şart mı?
ESXi 7.x ve 8.x sürümlerinde yapılandırma dosyaları tamamen şifreli olduğu için eski Linux üzerinden shadow düzenleme yöntemi artık çalışmaz. local.tgz.ve dosyasını çözebilmek için aynı sürümde çalışan nested bir ESXi’nin encryption motoruna ihtiyaç vardır. Bu nedenle nested ESXi, şifre kurtarma sürecinin zorunlu bir parçasıdır.
Root kurtarma işleminde neden SSH erişimi önemli?
SSH, recovery sırasında dosya aktarımı ve komut yürütme adımlarını hızlandırdığı için kritik bir bileşendir ve erişim kapalıysa VMware ESXi’de SSH Erişimi Nasıl Etkinleştirilir? rehberi üzerinden kolayca etkinleştirilebilir.