VMware ESXi 密码恢复指南

背景故事

某企业客户在日常运维中,由于人员岗位变动和交接文档不完整,意外丢失了VMware ESXi服务器的root管理员密码。导致运维团队无法正常登录和管理虚拟化平台,影响了日常的虚拟机维护和监控工作。

由于该ESXi服务器承载了多个关键业务系统,常规的密码重置方法无法适用,且客户希望尽可能保留现有的服务器配置和虚拟机状态。

因为遇到了这个事情然后对特定版本进行恢复密码,发现不同版本的VMware密码的恢复方法不一样,我对各种版本的VMware稍作研究,对方法进行记录。

Esxi的密码加密类型可以大致分为两种种,7.0.1之前的版本是配置记录法,通过明文密码进行记录,并压缩保存,7.0.1之后的版本使用了加密压缩包+数据库进行记录,安全性大幅增加;下面我对每种类型的密码加密和破解进行分章节介绍。

7.0.1之前的Esxi版本密码破解

环境准备

启动Linux Live系统(如Fedora Live),打开终端,确认ESXi配置分区(通常是/dev/sda5)。

操作步骤

备份和解压配置文件

mount /dev/sda5 /mnt
mkdir /tmp/esxi_recovery
cp /mnt/state.tgz /tmp/esxi_recovery
cd /tmp/esxi_recovery
tar xzf state.tgz
tar xzf local.tgz

修改密码配置 编辑etc/vmware/esx.conf文件(6.5前版本可能是esxi.conf):

vi etc/vmware/esx.conf

找到密码相关行进行修改或删除。

6.7-7.0.1版本操作

vi etc/shadow
# 删除root那一行的加密密码,密码就会为空,不需要密码就能登陆控制台

重新打包并恢复

tar czf local.tgz etc/
tar czf state.tgz local.tgz
cp state.tgz /mnt/state.tgz
umount /mnt

重启ESXi主机 重启后即可使用修改后的密码登录。

7.0.1之后的Esxi密码破解

环境准备

  • 一台ESXi服务器(可使用crypto-util命令)

  • 一个CD Linux系统(用于挂载ESXi配置盘,推荐使用Fedora Live或其他带桌面环境的发行版)

在Linux操作系统内进行拷贝解压

mount /dev/sda5 /mnt
mkdir /tmp/esxi_recovery
cp /mnt/state.tgz /tmp/esxi_recovery
cd /tmp/esxi_recovery
tar xzf state.tgz

我们可以得到加密的文件

ls 
encryption.info
local.tgz.ve

将local.tgz.ve文件解密和修改

转移进Esxi系统进行操作

解密

crypto-util ++coreDumpEnabled=false,mem=20 envelope extract --aad ESXConfiguration local.tgz.ve local.tgz
tar -zxvf local.tgz
# 这里能得到var目录和etc目录

编辑和注入加密密钥

生成密钥

lunar@light MINGW64 ~
$ openssl passwd -6 P@ssw0rd456
$6$WETC82U1igW2DA5B$DdhGW5DJGvZibnsGn2V.xdKGGeMQfs5K7dXcpf9C2v9pqmgKF01ma/iH1.yfHD0Jwb8rv0mt1kmkZFlG53Ltq1

lunar@light MINGW64 ~
$ openssl passwd -6 P@ssw0rd456
$6$TQSuipF384bW8Ggf$PjUJ46McgVBwqUGcJjSFD241tpXXPvedUPwwLEHS9i64l0fREBtvxCdxmWelDwBz0Vc28bbAMZtLJEqE8Yri70

查询密钥存储

/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'
;

注入密钥

/usr/lib/vmware/sqlite/bin/sqlite3 /tmp/var/lib/vmware/configstore/backup/current-store-1
# 进入数据库,更新密码为P@ssw0rd456
update config set UserValue='{"name":"root","password_hash":"$6$TQSuipF384bW8Ggf$PjUJ46McgVBwqUGcJjSFD241tpXXPvedUPwwLEHS9i64l0fREBtvxCdxmWelDwBz0Vc28bbAMZtLJEqE8Yri70","description":"Administrator"}' where Component='esx' and ConfigGroup = 'authentication' and Name = 'user_accounts' and Identifier = 'root'
;

重新打包并恢复

在Esxi系统里面打包

rm -f local.tgz
tar -cvf local.tgz .ssh/ etc/ var/

将local.tgz文件拷贝回Linux操作系统

rm -rvf state.tgz
tar -cvf state.tgz encryption.info local.tgz

拷贝回服务器并重启

cp state /mnt

重启后可以使用

P@ssw0rd456

进行登录


VMware ESXi 密码恢复指南
https://blog.wryhf.com/archives/vmware-esxi-mi-ma-hui-fu-zhi-nan
作者
蚁虿
发布于
2026年01月18日
更新于
2026年01月18日
许可协议