虚拟平台管理术:忘记 ESXi 主机的 root 密码该怎么办?

password_lost_20160406_main.png

无论是哪一种操作系统,从实体主机到虚拟主机,从 Intranet 到 Cloud 如此繁多,不同的系统可能都有不同的密码规则,久而久之对于一些已经不常登录管理的系统,就可能忘记最重要的管理员密码。

而对于已经正在运行且拥有多个虚拟机的 ESXi 主机,忘记了唯一的 root 帐号密码,此时不管是透过 ESXi 主控台来登录,或是以 vSphere Client 来登录,皆无法通过身份验证,这时应怎么办呢?

** 以下操作可能会对系统造成不可逆的破坏,请谨慎操作。 **

VMware_20160406_35.jpg

_** 从 ESXi 主控台登录**_

当您尝试以错误的密码来登录 ESXi 主控台时会出现如下图所示的验证失败讯息,此时若再尝试以 vSphere Client 来登录也肯定无法成功的。这时候如果您的 ESXi 主机有事先纳入了 vCenter Server 的管理范围,其实是可以透过 vSphere Web Client 的登录来修改该主机的 root 密码。但是如果没有事先作 vCenter Server 的管理,那么就需要透过接下来的做法来解决这个问题了。

VMware_20160406_36.jpg

_** 验证失败**_

原则上您只要准备一个有提供 LiveDVD 的 Linux 发行版本,然后透过它来开机启动 ESXi 主机并且重置 root 帐户密码即可。在此笔者以 Ubuntu 15.04 安装映像档为例。当启动至如下图所示的 Welcome 页面之后,请直接点选[Try Ubuntu]按钮来启动系统即可。

VMware_20160406_37-768x543.jpg

Ubuntu 映像档启动选单

成功进入到 Ubuntu 桌面之后,请如下图所示在桌面任何一个位置按下鼠标右键点选[Open Terminal]以启动终端。当然这操作也可从菜单的搜索功能中来开启。

VMware_20160406_38-768x314.jpg

Ubuntu 桌面右键选单

开启 Terminal 命令提示列之后,我们必须先下达 sudo passwd root 来设定 Ubuntu 的默认 root 密码,然后再下达 su – 命令来切换到 root 的执行身份,切换过程中会询问刚刚所设定的 root 密码。也唯有 root 权限才能够继续完成接下来的操作设定。

VMware_20160406_39.jpg

设定 Ubuntu 管理员密码

接下来请开启 Ubuntu 的搜索页面,来找到并开启如下图所示的 GParted 磁盘管理工具,以便确认目前 ESXi 主机系统资料存放位置。在这个范例中就是 /dev/sda5 这个磁盘分区。

VMware_20160406_40.jpg

GParted 磁盘管理工具

接下来请回到 Terminal 命令提示列并下达 mount /dev/sda5 /mnt,来将这个系统分区挂载至 /mnt 这个目录。在执行 ls -l /mnt 便可以看到此分区中的文件清单,如下图所示其中 state.tgz 便是我们需要修改的文件,请下达 cp /mnt/state.tgz /tmp 命令来将它复制一份至 /tmp 的目录之中。

VMware_20160406_41.jpg

复制 ESXi 主机档案

接着我们必须在 /tmp 的路径下,如下图所示透过 tar 命令将 state.tgz 解压缩,然后将解压缩出来的 local.tar 档案,再执行一次解压缩操作。这两个连续动作都只要下达 tar -zxvf 命令参数即可达成。

VMware_20160406_42.jpg

解压缩档案

完成 local.tar 档案的解压缩之后,请进入到 etc 目录下。如下图所示透过下达 ls 命令,便可以看到一个关于 Linux 系统专门用来储存账户信息的 shadow 文件。请使用任何文字编辑器来开启它,在此笔者直接输入 vi shadow。

VMware_20160406_43.jpg

查看 etc 目录内容

如下图所示便是 shadow 文件的内容,其中帐户的密码部分都是经过编码处理过的,因此对于 root 的帐户而言,我们只能够选择将它的密码字段先清空,然后再透过 ESXi 主控台来变更其密码即可。

VMware_20160406_44.jpg

修改 shadow 设定档

完成 shadow 文件内容的修改之后,我们必须重新打包前面步骤中所解压缩的两个系统文件。如下图所示请切换至 /tmp 目录下,然后下达 tar czf local.tgz etc 命令参数,来先将 etc 目录打包成 local.tgz 文件。最后再下达 tar czf state.tgz local.tgz 命令参数来将 local.tgz 档案打包至 state.tgz。确认以上打包的顺序无误之后,请下达 cp state.tgz /mnt/ 命令参数,来将 state.tgz 档案复制到 /mnt 路径下。完成复制后请下达 umount /dev/sda5 来卸载此磁盘分区。

VMware_20160406_45.jpg

重新打包系统压缩档

重新启动此 ESXi 主机再次进入到 ESXi 主控台。请按下[F2]键并以没有密码的 root 帐户登入系统。在[System Customization]选单页面中,请选择进入[Configure Password]页面,然后如下图所示重新设定新密码即可。按下[Enter]完成设定。终于解除忘记 root 密码的窘境!

VMware_20160406_46.jpg

修改 root 密码

小提醒:为了避免其它系统也可能因发生忘记默认管理员密码,而导致无法进行连线管理的窘境,建议您最好能够为每一个系统都建立好第二组的管理员帐密,甚至于建立第三组、第四组给其他 IT 人员来管理使用,然后停用默认的管理员帐户。如此一来不仅让系统更安全,也不会发生无其他管理员帐户可登入的情况。

结论

vSphere ESXi 6.0 的细微管理技巧当然不仅于此,因为光是藏在 vSphere Client 以及 vSphere Web Client 图形接口之中的细微之处,就已经难以道尽了,更遑论其他藏在 vSphere CLI 以及 vSphere Power CLI 命令主控台中的各项技巧了,要是全部都让您领悟与精通,那么可以说无论 vSphere 的整体架构设计如何复杂,您都将可化繁为简轻松应付每一天的维护作业,以及各式各样突如其来的紧急状况。还想知道更多有关于 vSphere 6.0 从 ESXi 主机到虚拟机器、网络、储存设备以及安全控管的技巧吗?未来笔者将会持续不定期的与大家来分享。