esxi重置密码步骤(通过vcenter)
前提条件:ESXi是在vCenter中被正常管理的。
即vcenter中存在物理机,能够正常管理使用,但是其中有的机器root密码忘记,web页面可以打开显示输入账号密码
第一种方案:使用vcenter主机配置文件功能,在vcenter页面修改密码
一、提取主机配置文件
1.点击菜单选择“策略和配置文件”。

2.选择“主机配置文件”选项。
3.点击“提取主机配置文件”。

4.选择需要提取配置文件的主机,点击下一页。

5.可以对文件起一个容易辨别的名称,点击完成。

稍微等待一会,此页面会出现刚提取的主机配置文件

二、编辑配置修改密码
1.选中提取出来的文件,鼠标右键选择“编辑主机配置文件”。

2.在编辑主机配置文件页面展开选项“安全和服务-安全设置-安全-用户配置-root”。点击选择“root”。
3.点击“保留默认账户的密码不变”,选择“固定的密码配置”。

4.填写新的密码并确认密码,点击保存。

5.保存过后继续鼠标右键选择“附加/分离主机和集群”。

6.选中要附加到上面的主机,点击保存。

7.再次鼠标右键,选择“检查主机配置文件合规性”。

8.等待检查完成后,鼠标右键,选择“修复”。

9.选中主机,点击修复(注意:这里若选中不了主机则需要先选中配置文件鼠标右键选择“编辑主机自定义”)。

在配置文件页面鼠标右键选择“编辑主机自定义

选中主机,点击下一页:

点击完成:

三、将配置文件分离
1.最后鼠标右键选择“附加/分离主机和集群”,将配置文件分离。

2.之前附加了的主机,点击保存就分离了。

3.修复完成后,就可以使用新密码登录了。

后续使用在web页面192.168.99.13修改密码即可

修改密码后显示“主机与附加配置文件不符”,属于正常现象,因为目前root密码和配置文件中记录的值不同

第二种方案:使用vmvare powercli,在powershell命令行修改密码


一、windows 安装powercli:
powercli下载地址:
https://download.powershell.com.cn/%E8%84%9A%E6%9C%AC%E6%A8%A1%E5%9D%97/PowerShell/%E5%B8%B8%E7%94%A8%E6%A8%A1%E5%9D%97/VMware/VMwarePowershell.zip
1.PowerShell命令行直接安装,此下载会比较慢,因为要连接外网下载,非常大概率下载失败。
Install-Module VMware.PowerCLI
2.离线安装PowerCLI
- 下载PowerCLI离线包,点击下载离线模块
- 打开powershell,查看Powershell环境变量路径,将下载离线包解压到下述其中一个路径即可。
- 注意:请把模块解压后的文件目录复制到其中一个Powershell环境变量路径,建议复制到如下路径。

PS C:\Windows\system32> $env:PSModulePath -split ";"
C:\Users\dengpeng\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\Windows\system32\WindowsPowerShell\v1.0\Modules
3.管理员运行powershell:
#查看是否已经导入成功
Get-Module VMware* -ListAvailable
#对于Powershell,默认禁止运行脚本,需要开放允许远程执行脚本,如果这里不设置,导入的模块将无法执行并报错。
set-ExecutionPolicy RemoteSigned
#最后别忘了关闭powercli的证书检查,因为通常vCenter都是使用自签名证书,不受信任,如果不设置无法连接报错。
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
#加载一下VMware.PowerCLI模块,正常情况下不需要设置。
Get-Module VMware* -ListAvailable
import-Module “输入列表里面的要导入的模块名称”
至此,powercli安装完毕

二、命令行操作连接vcenter
按照以下步骤修改vcenter中的esxi机器密码(192.168.99.13)
Connect-VIServer -Server 192.168.99.225 -User Administrator@VSPHERE.LOCAL -Password Cjxx@cent3r
# 通过 ESXCLI 修改密码
$esxiHost = Get-VMHost -Name "192.168.99.13"
$esxcli = Get-EsxCli -VMHost $esxiHost -V2
$arguments = $esxcli.system.account.set.CreateArgs()
$arguments.id = "root"
$arguments.password = "hey3@eGjt4"
$arguments.passwordconfirmation = "hey3@eGjt4"
$esxcli.system.account.set.Invoke($arguments)

修改完成,登录web页面测试

成功登录
附:PowerCLI几个常见的使用方式
#连接到vCenter
Connect-ViServer -Server vcenter_ip-or-esxi_ip -User username -Password some_very_secure_password
#查询虚拟机列表,验证是否连接成功
Get-VM
#导出关机虚拟机列表
Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"} | Export-Csv -Path c:\users\username\desktop\poweredoff-vms.csv -NoTypeInformation
#导出虚拟机列表,仅包含部分信息
Get-VM | Select Name,PowerState,NumCPU,MemoryMB | Export-Csv -Path c:\users\username\desktop\vms.csv -NoTypeInformation
#开启虚拟机
Get-VM vmname | Start-VM
#关闭虚拟机电源,硬关机
Stop-VM -VM vmname -Confirm:$False
#关闭虚拟机,软关机,需要VMTools正常安装并运行
Shutdown-VMGuest -VM vmname -Confirm:$False
#重置虚拟机,硬重启
Restart-VM -VM vmname -Confirm:$False
#重启虚拟机,软重启,需要VMTools正常安装并运行
Restart-VMGuest -VM vmname -Confirm:$False
#vMotion虚拟机到另一个主机
Get-VM -Name vmname -Location esxi01 | Move-VM –Destination esxi02
#新版本vCenter导出虚拟机都是ovf+vmdk+mf+nvram文件了,要是想导出一个ova格式的文件怎么办呢?通过PowerCLI来。以下连接vCenter执行。
#移除cd-rom
Get-VM -Name "VMNAME" | Get-CDDrive | Set-CDDrive -NoMedia -confirm:$false
#关机,注意,会将虚拟机关机的!
Get-VM -Name "VMNAME" | Shutdown-VMGuest -confirm:$false
#导出ova
Get-VM -Name "VMNAME" | Export-Vapps -Destination "c:\users\username\desktop\vmname.ova" -Type OVA
#给虚拟机打标签
#给单个虚拟机打标签
Get-VM test_vm_name | New-TagAssignment -Tag tag_name
#给虚拟机文件夹里面的虚拟机打标签
$vmlist = Get-Folder -Name folder_nam | Get-VM
foreach ($vm in $vmlist) {
Get-VM $vm | New-TagAssignment -Tag tag_name
}
按照csv表格给虚拟机打标签(例如下表:vm-tag.csv)
| vmname | vmtag |
|---|---|
| vm01 | tag01 |
| vm02 | tag02 |
$vms = Import-Csv -Path ~\Desktop\vm-tag.csv
foreach ($vm in $vms) {
Get-VM $vm.vmname | New-TagAssignment -Tag $vm.tagname
}
附:root远程登陆错误次数太多被锁定解决方案
命令行esxi shell/SSH排查(已知root密码)
一、给服务器插上键盘显示器,看到esxi系统首页,输入root密码
- 按F2,进入配置页面
- 进入“系统自定义” > “故障排除选项”(Troubleshooting Options)
- 使用方向键选择“Troubleshooting Options”,按 Enter 。
- 启用 ESXi Shell
- 选择“Enable ESXi Shell”,按 Enter ,当右侧显示“ESXi Shell is Enabled”即可。
- (可选)同时建议启用 SSH
- 在同一菜单下选择“Enable SSH”,按 Enter ,右侧显示“SSH is Enabled”。
二、进入命令行界面
- 回到控制台主界面,按 Alt + F1 组合键
- 屏幕会变黑并出现登录提示。
- 输入你的管理员用户名(通常是 root )和密码,即可进入命令行。
- ⚠️ 注意:如果未通过上述步骤启用 ESXi Shell,按 Alt + F1 只会出现一个闪烁光标,无法登录。
- 操作完成后返回图形界面
- 在命令行页面,按 Alt + F2 可以切回原来的图形化界面。
#查看root用户远程登录错误次数
pam_tally2 --user root
# 重置 root 用户的失败计数器
pam_tally2 --user root --reset
# 验证重置结果
pam_tally2 --user root
#↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑这里可以隔几秒试一次查看是否有增长
排查是哪个ip在尝试的远程登陆导致的root 账户被锁定
#显示当前登录用户
who
#查看当前活跃远程连接(实时 IP):
#输出:列出所有 TCP/UDP 连接,包括本地端口、远程 IP/端口、状态
esxcli network ip connection list
#对于 Web UI (Host Client) 连接:
tail -n 50 /var/run/log/hostd.log | grep -i "login\|session\|192.168"
锁定策略在esxi7.0.3中由PAM认证控制,web页面能修改但无法禁用,置0会报错


# 查看 PAM 配置,这是控制登录锁定的关键
cat /etc/pam.d/system-auth
#%PAM-1.0
auth required /lib/security/$ISA/pam_env.so
auth optional /lib/security/$ISA/pam_faildelay.so delay=2000000
auth substack system-auth-tally
auth include system-auth-generic
account substack system-auth-tally
account required /lib/security/$ISA/pam_access.so
account include system-auth-generic
session include system-auth-generic
# Prevent services from changing user passwords directly with PAM.
password required /lib/security/$ISA/pam_warn.so
password required /lib/security/$ISA/pam_deny.so
cat /etc/pam.d/system-auth-tally
# 检查是否有类似下面的行(可能被注释掉了)
# auth required pam_tally2.so deny=5 unlock_time=900
# auth required pam_faillock.so deny=5 unlock_time=900
#%PAM-1.0
auth [user_unknown=done default=ignore] /lib/security/$ISA/pam_succeed_if.so uid >= 0 quiet
auth sufficient /lib/security/$ISA/pam_succeed_if.so uid > 10000 quiet
auth sufficient /lib/security/$ISA/pam_succeed_if.so service = login quiet
auth sufficient /lib/security/$ISA/pam_succeed_if.so service = dcui quiet
#下方这一行就是负责管理失败次数,锁定时间的锁定策略配置
auth sufficient /lib/security/$ISA/pam_tally2.so silent onerr=fail even_deny_root deny=5 unlock_time=900
auth optional /lib/security/$ISA/pam_vmk_exec.so /usr/lib/vmware/misc/bin/tally_vob.sh ++group=hostd-tmp,mem=12
auth required /lib/security/$ISA/pam_deny.so
account sufficient /lib/security/$ISA/pam_succeed_if.so uid > 10000 quiet
account sufficient /lib/security/$ISA/pam_succeed_if.so service = login quiet
account sufficient /lib/security/$ISA/pam_succeed_if.so service = dcui quiet
account required /lib/security/$ISA/pam_tally2.so silent
修改锁定策略(完整步骤)
# 1. 首先重置当前的失败计数器
pam_tally2 --user root --reset
# 2. 备份配置文件
cp /etc/pam.d/system-auth-tally /etc/pam.d/system-auth-tally.backup
# 3. 编辑文件
vi /etc/pam.d/system-auth-tally
# 找到这一行:
auth sufficient /lib/security/$ISA/pam_tally2.so silent onerr=fail even_deny_root deny=5 unlock_time=900
# 修改为(选项1:完全禁用锁定):
auth sufficient /lib/security/$ISA/pam_tally2.so silent
# 或者修改为(选项2:大幅减少锁定影响):失败50次锁定60s
auth sufficient /lib/security/$ISA/pam_tally2.so silent onerr=fail even_deny_root deny=50 unlock_time=60
# 4. 保存文件后,重启认证服务
/etc/init.d/lsassd restart
/etc/init.d/hostd restart
# 5. 等待服务启动
sleep 30
验证修改结果
# 检查计数器
pam_tally2 --user root
# 检查配置文件
cat /etc/pam.d/system-auth-tally | grep pam_tally2
# 测试登录(在web页面输入账号密码)
https://192.168.99.13
192.168.99.36
Ser12P@ssw0rd
Connect-VIServer -Server 192.168.99.225 -User Administrator@VSPHERE.LOCAL -Password Cjxx@cent3r
# 通过 ESXCLI 修改密码
$esxiHost = Get-VMHost -Name "192.168.99.36"
$esxcli = Get-EsxCli -VMHost $esxiHost -V2
$arguments = $esxcli.system.account.set.CreateArgs()
$arguments.id = "root"
$arguments.password = "Ser12P@ssw0rd"
$arguments.passwordconfirmation = "Ser12P@ssw0rd"
$esxcli.system.account.set.Invoke($arguments)
192.168.99.184
Csmm_esx184
Connect-VIServer -Server 192.168.99.225 -User Administrator@VSPHERE.LOCAL -Password Cjxx@cent3r
# 通过 ESXCLI 修改密码
$esxiHost = Get-VMHost -Name "192.168.99.184"
$esxcli = Get-EsxCli -VMHost $esxiHost -V2
$arguments = $esxcli.system.account.set.CreateArgs()
$arguments.id = "root"
$arguments.password = "Csmm_esx184"
$arguments.passwordconfirmation = "Csmm_esx184"
$esxcli.system.account.set.Invoke($arguments)
没被纳入vcenter的单机esxi重置密码:
故障背景
esxi主机单机,版本6.7,不知道密码的情况下需要进系统查看机器信息
解决思路:
已知esxi 版本为6.7 ,可以不使用esxi启动盘重新安装,使用ubuntu启动盘进入系统清除原系统/etc/shadow 里面记录的root密码信息
首先刻录ubuntu系统的启动盘,然后进入ubuntu系统,找到esxi中/etc/shadow所在的磁盘,读写权限挂载之后清空此文件记录的root密码,然后把清空后的文件覆盖回去,启动系统即可空密码进入系统设置root密码
具体步骤:
启动盘制作
准备一个u盘,打开rufus;制作Ubuntu 20.04 Live CD

打开 Rufus,配置建议:
设备:选择你的 U 盘引导类型:选择刚下载的 Ubuntu ISO- “`
分区类型:
- 新电脑/UEFI:选 `GPT`
- 老电脑/Legacy BIOS:选 `MBR`
- `目标系统`:UEFI 对应选 `UEFI`
- `文件系统`:默认即可,通常 FAT32
- 如果后面 Rufus 问 `ISO 模式` 还是 `DD 模式`,一般先选 **ISO 模式**
开始后提示 Ubuntu 20.04.6 镜像需要匹配的 **GRUB 启动文件**,它本地没有对应版本,所以要联网下载一个小文件 `core.img`,点击是下载
### 进入ubuntu系统
在开机界面按enter/F1/F2 多试几个进入bios
进入bios之后修改启动顺序,把u盘放到第一位,点击`try ubuntu`免安装进入系统
进入系统后打开`GParted ` ,查看哪个盘是`bootbank` 分区,大概率是`/dev/sda5`

`/dev/sda1`:4MB,引导分区,不动
`/dev/sda5`:250MB FAT16,已用 148MB,**很像当前 bootbank**
`/dev/sda6`:250MB FAT16,几乎空,像 altbootbank
`/dev/sda8`:286MB FAT16,可能是另一个系统小分区,先别动
`/dev/sda3`:924GB unknown,**这是 VMFS 数据仓库,千万别格式化/修改**
GParted 里显示 `unknown` 和红色感叹号是正常的,Ubuntu 不认识 ESXi 的 VMFS/诊断分区,不代表坏了。
**至此找到了需要操作的磁盘/dev/sda5**
### 挂载磁盘,修改文件
打开 Terminal 按照以下步骤执行命令:
**1. 进入 root**
sudo -i
**2. 挂载 bootbank,只读检查**
mkdir -p /mnt/esxi
mount -o ro /dev/sda5 /mnt/esxi
ls -lh /mnt/esxi/state.tgz
tar tzf /mnt/esxi/state.tgz
这里应该看到 `local.tgz`。如果没看到,先停。
**3. 复制并解包**
rm -rf /tmp/esxi-reset
mkdir -p /tmp/esxi-reset/state
mkdir -p /tmp/esxi-reset/local
cp -a /mnt/esxi/state.tgz /tmp/esxi-reset/state.tgz.good
umount /mnt/esxi
tar xzf /tmp/esxi-reset/state.tgz.good -C /tmp/esxi-reset/state
tar xzf /tmp/esxi-reset/state/local.tgz -C /tmp/esxi-reset/local
**4. 修改 root 密码**
cp -a /tmp/esxi-reset/local/etc/shadow /tmp/esxi-reset/shadow.good
sed -i “s#^root:[^:]*:#root::#” /tmp/esxi-reset/local/etc/shadow
grep ‘^root:’ /tmp/esxi-reset/local/etc/shadow
看到 `root::...` 就对。
**5. 重新打包 local.tgz**
cd /tmp/esxi-reset/local
tar -czf /tmp/esxi-reset/state/local.tgz *
**7. 重新打包 state.tgz**
cd /tmp/esxi-reset/state
tar -czf /tmp/esxi-reset/state.tgz local.tgz
检查,必须只看到 `local.tgz`,不要是 `./local.tgz`:
tar tzf /tmp/esxi-reset/state.tgz
**8. 写回 bootbank**
mount -o rw /dev/sda5 /mnt/esxi
cp -a /mnt/esxi/state.tgz /mnt/esxi/state.tgz.before-reset
cp -f /tmp/esxi-reset/state.tgz /mnt/esxi/state.tgz
sync
umount /mnt/esxi
**9. 重启**
reboot
“`
拔掉 Ubuntu U 盘,让 ESXi 启动。进 ESXi 后按 F2:
空密码进入esxi系统,后续进入esxi的管理网页即可