
VMware ESXi kurumsal sanallaştırma dünyasında en güvenilir ve en çok tercih edilen hypervisor çözümlerinden biridir. Ancak tüm yönetimsel işlemlerin merkezinde yer alan root hesabının şifresini kaybetmek veya unutmak hem küçük laboratuvar ortamlarında hem de büyük veri merkezlerinde ciddi bir problem haline gelebilir.
Normal şartlarda VMware’in bu konuda resmi politikası çok nettir root şifresi unutulursa tek desteklenen çözüm ESXi’yi yeniden kurmaktır. Ancak pratikte bu her zaman mümkün olmayabilir.
Özellikle manuel yapılandırılmış küçük ortamlarda veya kritik iş sürekliliği gerektiren sistemlerde yeniden kurulum, zaman kaybı ve veri kaybı riskleri doğurur.
İşte bu makalemde resmi olarak desteklenmeyen ancak sahada yaygın şekilde kullanılan alternatif bir yöntem üzerinden ESXi 7.0 ve 8.0 sürümlerinde unutulan root şifresinin nasıl kurtarılabileceğini anlatacağız.
VMware ESXi’nin eski sürümlerinde (5.x civarı) root şifresini resetlemek görece basitti. Hostu bir Linux Live CD ile açıp konfigürasyon dosyaları üzerinde düzenleme yaparak şifre değiştirilebiliyordu.
Ancak ESXi 6.x sonrası VMware güvenliği artırdı ve şifrelerin tutulduğu yapı tamamen değişti:
- Root şifre hash’i artık doğrudan erişilemez dosyalarda değil,
- SQLite veritabanı içinde,
- şifrelenmiş konfigürasyon paketleri aracılığıyla saklanmaya başladı.
Bu yüzden eski yöntemler (dosya düzenleme veya hash değiştirme) işe yaramıyor.
Root şifresi unutulduğunda öncelikle şu resmi yollar denenmelidir:
- vCenter üzerinden sıfırlama: Eğer host vCenter’a bağlıysa yetkili bir hesap aracılığıyla root şifresi değiştirilebilir.
- AD entegrasyonu: Host bir Active Directory domain üyesiyse domain admin hesabı ile oturum açılabilir.
- ESXi yeniden kurulumu: Standalone (bağımsız) bir host için resmi desteklenen tek yöntemdir.
Eğer bu seçenekler mevcut değilse o zaman “gayriresmi çözüm” dediğimiz alternatif yol devreye girer.
Gayriresmi Çözümün Mantığı
Bu çözümde işin özünde şunu yapıyoruz:
- ESXi’nin tüm konfigürasyonunun tutulduğu state.tgz dosyasını alıyoruz.
- İçindeki local.tgz.ve dosyasını şifre çözme aracıyla açıyoruz.
- Buradaki SQLite veritabanında root şifre hash’ini değiştiriyoruz.
- Dosyaları tekrar paketleyip hosta geri yüklüyoruz.
Ama bunu doğrudan fiziksel host üzerinde yapamıyoruz. Çünkü host çalışırken bu dosyalar kilitli. Bu yüzden aynı sürümde ikinci bir ESXi host kuruyoruz ve işlemleri orada gerçekleştiriyoruz.
Adım Adım Uygulama
Adım 1 – İkincil (Sanal) ESXi Host Kurulumu
- Yeni bir sanal makine oluşturun.
- İşletim sistemi tipini VMware ESXi (aynı sürüm) olarak seçin.
- CPU ayarlarında Expose hardware-assisted virtualization seçeneğini işaretleyin.
- ESXi ISO dosyasını sanal makineye bağlayarak kurulumu yapın.
Bu sanal host, şifre kırma veya hash değiştirme işlemleri için bir “laboratuvar ortamı” olacak.
Adım 2 – Fiziksel Hosttan state.tgz Dosyasını Alma
ESXi konfigürasyonları bootbank denilen bölümlerde tutulur. Burada bulunan state.tgz
dosyası kritik bilgileri barındırır.
Linux üzerinden bu dosyayı almak için:
mount /dev/sdb6 /mnt
cp /mnt/bootbank/state.tgz /tmp
/dev/sdb6
→ ESXi’nin FAT formatlı boot bölümü.state.tgz
→ Konfigürasyonun tutulduğu sıkıştırılmış paket.
Bu dosyayı birden fazla kopya halinde yedeklemeniz kesinlikle önerilir.
Adım 3 – Dosyayı Sanal ESXi’ye Aktarma
Windows üzerinde dosyayı sanal hosta kopyalamak için SCP kullanılabilir:
scp "C:\temp\state.tgz" root@192.168.100.111:/tmp/state.tgz
Ardından sanal hostta açın.
cd /tmp
tar -zxvf state.tgz
Adım 4 – local.tgz.ve Dosyasını Çözme
İçinde şifrelenmiş konfigürasyon bulunan dosya local.tgz.ve’dir.
crypto-util envelope extract --aad ESXConfiguration local.tgz.ve local.tgz
tar -zxvf local.tgz
Bu adımla birlikte artık root şifresinin hash’ine erişebileceğimiz dosyalar açılmış olur.
Adım 5 – Root Hash’ini Düzenleme
Şifre hash’i SQLite veritabanında bulunur.
/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'"
Bu komut, mevcut root hash’ini görüntüler.
Yeni bir hash oluşturmak için:
openssl passwd -6
Yeni hash’i kopyalayın ve veritabanına güncelleyin:
/usr/lib/vmware/sqlite/bin/sqlite3 /tmp/var/lib/vmware/configstore/backup/current-store-1 \
"update config set UserValue='{\"name\":\"root\",\"password_hash\":\"$6$xxxx...\",\"description\":\"Administrator\"}'
where Component='esx' and ConfigGroup='authentication' and Name='user_accounts' and Identifier='root'"
Adım 6 – Dosyaları Yeniden Paketleme
vmtar -c etc .ssh var -o local.tgz
vmtar -c local.tgz -o local.tgz.ve
tar -czf state-recover.tgz local.tgz.ve
Artık yeni root şifresi hash’ini içeren state-recover.tgz hazırdır.
Adım 7 – Fiziksel Hostta Dosyanın Değiştirilmesi
Yeni dosyayı fiziksel hostun bootbank bölümlerine yazın.
mount /dev/sdb5 /bootbank1
mount /dev/sdb6 /bootbank2
cp /root/state-recover.tgz /bootbank1/state.tgz
cp /root/state-recover.tgz /bootbank2/state.tgz
umount /bootbank1
umount /bootbank2
Ardından hostu yeniden başlatın. Artık root şifreniz sizin belirlediğiniz yeni şifre olacaktır.
Bu yöntem VMware tarafından desteklenmez. Yanlış yapılan bir işlem hostun açılmamasına neden olabilir. İşleme başlamadan önce mutlaka yedek alınmalıdır. Kritik sistemlerde risk alınmamalı mümkünse resmi yöntemler tercih edilmelidir.