在更新到 vCenter Server 8.0 U2 或更高版本后,极有可能会遇到一个令人烦恼的问题:就是使用 root 账户通过 SSH 登录VCSA时,可能会出现随机无法访问的情况,或者账户被锁定几分钟。
问题现象
典型的问题表现包括:
-
- 前一分钟还能正常登录 SSH,下一分钟就提示账户被锁定
- 输入正确密码时也无法登录
- 一段时间后(默认 5 分钟)又能正常登录了
- 特别是在之前曾输入过错误密码后
根本原因分析
这个问题是由于 vCenter Server 8.0 U2 及以上版本对账户锁定机制的改进导致的:
锁定机制变化
从 8.0 U2 开始,vCenter Server 将账户锁定机制从 pam_tally2 更改为 faillock。这个改进提高了安全性,但也引入了与默认 root 账户 shell 不兼容的问题。
默认 shell 与锁定机制的冲突
vCenter Server 的默认 root 账户 shell 是 /bin/appliancesh,而不是传统的 /bin/bash。当使用默认 shell 时,faillock 机制的行为会导致 root 账户在输入错误密码后被锁定。
解决方案
临时解决方案
如果你正在遇到这个问题,可以通过以下步骤快速解决:
1. 通过 console 或 DCUI 访问:如果 SSH 已被锁定,可以通过控制台或 DCUI 访问 vCenter Server
2. 等待锁定时间结束:默认锁定时间为 5 分钟,等待后再次尝试登录
3. 重置锁定计数器:如果需要立即解锁,可以使用命令:
faillock --reset --user root
永久解决方案
为了彻底解决这个问题,建议将 root 账户的默认 shell 更改为 /bin/bash:
1. 登录到 vCenter Server:通过 SSH(如果未被锁定)或控制台登录
2. 切换到 bash shell:输入以下命令:
chsh -s /bin/bash root
3. 验证更改:输入以下命令检查是否更改成功:
grep root /etc/passwd
输出应该显示类似这样的结果:
root:x:0:0:root:/root:/bin/bash
4. 重新登录:退出当前会话并重新通过 SSH 登录,确保问题已解决
验证过程
验证锁定行为
更改 shell 后,可以通过以下步骤验证问题是否已解决:
1. 尝试使用错误密码登录几次
2. 然后使用正确的密码登录,应该能够成功
3. 检查 /var/log/auth.log 文件,查看是否有锁定相关的信息
验证其他功能
确保更改 root shell 不会影响其他重要功能:
- 检查 vCenter Server 的管理界面是否正常工作
- 测试服务启动和停止命令
- 验证备份和恢复功能
安全考虑
虽然更改默认 shell 解决了 SSH 锁定问题,但也需要考虑安全方面的因素:
1. 安全性对比:/bin/bash 和 /bin/appliancesh 在安全方面有一些差异,但在大多数管理场景下,这种更改是可以接受的
2. 密码策略:确保设置了强密码策略,以减少恶意登录尝试的风险
3. 定期监控:定期检查 /var/log/auth.log 文件,关注登录活动







