Hướng dẫn Reset mật khẩu Root cho vSphere ESXi
Trong bài viết này, hãy cùngBizfly Cloud tìm hiểu cách thức để reset mật khẩu root trên vSphere ESXi trong trường hợp bạn quên mật khẩu nhé. Hãy tưởng tượng, một ngày nọ bạn cần đăng nhập ESXi để quản lý dưới quyền user root, thì hỡi ôi bạn đã quên mất cái thông tin mật khẩu chính xác để đăng nhập vào rồi. Đau đầu dễ sợ và cần tìm cách để khôi phục (reset) lại mật khẩu root trên ESXi Server.
VMware vSphere ESXi OS chứa thông tin về tài khoản user, mật khẩu đã hash,… ở file có tên /etc/shadow giống như các OS Linux/UNIX khác. Các thông tin hệ thống, cấu hình hệ thống,.. được lưu giữ trong một file nén lưu trữ cấu hình có tên ‘state.tgz‘ nằm ở phân vùng boot image ESXi. Và đây cũng là file nén chứa cả thông tin mật khẩu user root đấy.
Tuy nhiên bản thân VMware cũng cảnh báo rằng, nếu ta quên mật khẩu thì chỉ có nước cài đặt mới một ESXi Host mà thôi.
Vậy vì sao phương pháp ở bài viết này dùng để reset pass root ESXi không được VMware khuyến khích thực hiện? Đơn giản là bạn thao tác trực tiếp với các file hệ thống cấu hình ESXi , nên nếu có bất kì thao tác nhầm lẫn nào sẽ gây ảnh hưởng hoạt động của hệ thống ESXi. Chính vì vậy bạn cần thao tác cẩn thận trong hoạt động reset pass root ESXi với các thao tác mình chỉ dẫn.
Các bước để reset mật khẩu root trên vSphere ESXi
Bước 1: boot LiveCD
Bước 2: mount phân vùng boot image hypervisor ESXi
Bước 3: xoá mật khẩu trong file shadow của state.tgz
Bước 4: nén nội dung thông tin mới thành file ‘state.tgz’
Bước 5: login user root / set lại mật khẩu mới
Cấu trúc thứ tự partition của ESXi
Partition 1: systemPartition 4MB
Partition 2: linuxNative 4GB -> /scratch
Partition 3: VMFS datastore
Partition 5: linuxNative 250MB -> /bootbank
Partition 6: linuxNative 250MB -> /altbootbank
Partition 7: vmkDiagnostic 110MB
Partition 8: linuxNative 286MB -> /store
Bạn cần lưu ý 2 partition 5 và 6 trong cấu trúc partition layout của OS ESXi. Vì phân vùng 5 /bootbank chứa file ‘state.tgz‘ đã được nén, trong file này chứa thông tin hệ thống kể cả file ‘state.tgz‘. Phân vùng partition 6 ‘/altbootbank‘, chứa bản copy của file boot image và file state.tgz ở phân vùng partition 5 nhằm backup/recovery. Nên khi thực hiện các thao tác reset pass root trên ESXi ta cần thao tác trên cả 2 file ‘state.tgz’ của 2 partition 5 và 6.
Các bước để reset mật khẩu root trên ESXi
Bước 1: boot LiveCD
Bạn hãy boot ESXi Server của bạn với đĩa cứu hộ Linux có thể là Ubuntu hoặc CentOS đều được. Mình chọn CentOS 7 LiveCD cứu hộ để boot. Lúc này OS LiveCD sẽ được load lên bộ nhớ RAM để chạy như dưới.
Sau đó hãy mở terminal của OS LiveCD ra nhằm thực hiện các thao tác cứu hộ nhé. Nhảy lên quyền user root luôn để thực thi các câu lệnh khác.
# sudo -s
Bước 2: mount phân vùng boot image hypervisor ESXi
Bạn sử dụng lệnh ‘parted‘ để coi thông tin về partition layout của ổ cứng đang cài đặt ESXi. Trong trường hợp của mình đó là phân vùng logical tên ‘/dev/sdb‘. Sau đó bạn nhìn tiếp tục sẽ thấy boot image của OS ESXi được nằm ở 250MB partition /dev/sdb5 (partition thứ 5) có chứa file nén tên ‘state.tgz‘.
# parted -l
Model: DELL PERC H730P Mini (scsi) Disk /dev/sdb: 960GB
Sector size (logical/physical): 512B/512B Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags 1 32.8kB 4194kB 4162kB fat16 boot
5 4211kB 266MB 262MB fat16
6 266MB 528MB 262MB fat16
7 528MB 644MB 115MB
8 644MB 944MB 300MB fat16
9 944MB 3628MB 2684MB
2 3628MB 7922MB 4294MB fat16
3 7922MB 960GB 952GB
Giờ ta sẽ thực hiện mount phân vùng /dev/sdb5 để lấy file ‘state.tgz‘ ra chỉnh sửa. Thực hiện các câu lệnh Linux sau để mount.
# mkdir /mnt/esxi/
# mount /dev/sdb5 /mnt/esxi/ # cd /mnt/esxi
Liệt kê thử các nội dung file nằm trong thư phân vùng /dev/sdb5 đang được mount . Bạn sẽ tìm thấy file ‘state.tgz‘.
# ls -A
a.b00 b.b00 emulex_e.v00 ipmi_ipm.v01 lsu_lsi_.v00 net_bnx2
.v01 net_mlx4.v00 nmlx4_rd.v00 sata_ahc.v00 scsi_adp.v00 sc si_meg.v01 tboot.b00 weaselin.t00
ata_pata.v00 block_cc.v00 esx_dvfi.v00 ipmi_ipm.v02 lsu_lsi
_.v01 net_cnic.v00 net_mlx4.v01 nmlx5_co.v00 sata_ata.v00 s csi_aic.v00 scsi_meg.v02 uc_amd.b00 xhci_xhc.v00 ata_pata.v01 bnxtnet.v00 esx_ui.v00 ixgben.v00 lsu_lsi_.v02
net_e100.v00 net_nx_n.v00 nvme.v00 sata_sat.v00 scsi_be2.v 00 scsi_mpt.v00 uc_intel.b00 xorg.v00
ata_pata.v02 boot.cfg i40en.v00 jumpstrt.gz lsu_lsi_.v03 ne t_e100.v01 net_qlcn.v00 ohci_usb.v00 sata_sat.v01 scsi_bnx. v00 scsi_mpt.v01 uhci_usb.v00
ata_pata.v03 brcmfcoe.v00 igbn.v00 k.b00 lsu_lsi_.v04 net_e nic.v00 net_qlge.v00 onetime.tgz sata_sat.v02 scsi_bnx.v01 scsi_mpt.v02 user.b00
ata_pata.v04 chardevs.b00 ima_be2i.v00 lpfc.v00 misc_cni.v0
0 net_forc.v00 net_tg3.v00 qedentv.v00 sata_sat.v03 scsi_fn i.v00 scsi_qed.v00 useropts.gz
ata_pata.v05 dell_con.v00 ima_qla4.v00 lsi_mr3.v00 misc_dri
.v00 net_i40e.v00 net_vmxn.v00 qedf.v00 sata_sat.v04 scsi_h ps.v00 scsi_qla.v00 vsanheal.v00
ata_pata.v06 ehci_ehc.v00 imgdb.tgz lsi_msgp.v00 mtip32xx.v 00 net_igb.v00 nmlx4_co.v00 qlnative.v00 sb.v00 scsi_ips.v0
0 state.tgz vsanmgmt.v00
ata_pata.v07 elxnet.v00 ipmi_ipm.v00 lsu_hp_h.v00 net_bnx2. v00 net_ixgb.v00 nmlx4_en.v00 rste.v00 scsi_aac.v00 scsi_me g.v00 s.v00 vsan.v00
Bước 3: xoá mật khẩu trong file shadow của state.tgz
Giờ ta cần thao tác với file hệ thống ESXi đang nằm trong file nén ‘state.tgz‘. Hãy copy file ‘state.tgz‘ ra thư mục tạm ‘/tmp‘, sau đó giải nén liên tục file state.tgz và local.tgz.
# cp state.tgz /tmp/
# cd /tmp/
# tar xzvf state.tgz
local.tgz
# tar xzvf local.tgz
etc/security/access.conf
etc/vmware/ssl/rui.key
etc/vmware/ssl/rui.crt
etc/vmware/hostd/vmAutoStart.xml
etc/vmware/hostd/hostsvc.xml
etc/vmware/configrules
etc/vmware/locker.conf
etc/vmware/lunTimestamps.log
etc/vmware/license.cfg
etc/vmware/vpxa/vpxa.cfg
etc/vmware/rhttpproxy/config.xml
etc/vmware/esx.conf
etc/vmware/.backup.counter
etc/vmware/dvsdata.db
etc/vmsyslog.conf.d/hostd.conf
etc/vmsyslog.conf.d/vpxa.conf
etc/vmsyslog.conf.d/fdm.conf
etc/ssh/ssh_host_dsa_key.pub
etc/ssh/sshd_config
etc/ssh/ssh_host_rsa_key
etc/ssh/ssh_host_rsa_key.pub
etc/ssh/ssh_host_dsa_key
etc/chkconfig.db
etc/keymap
etc/sfcb/repository/root/interop/cim_indicationfilter.idx
etc/sfcb/repository/root/interop/cim_listenerdestinationcim xml.idx
etc/sfcb/repository/root/interop/cim_indicationhandlercimxml.idx
etc/sfcb/repository/root/interop/cim_indicationsubscription.idx
etc/sfcb/repository/root/interop/sfcb_registeredprofile.idx
etc/sfcb/repository/root/interop/sfcb_registeredprofile etc/sfcb/repository/root/config/omc_config.idx etc/sfcb/repository/root/config/omc_config etc/sfcb/repository/root/config/omc_namespaceconfig.idx etc/sfcb/repository/root/config/omc_namespaceconfig etc/sfcb/sfcb.cfg
etc/sfcb/uuid etc/hosts
etc/dhclient-vmk0.leases etc/random-seed etc/resolv.conf etc/vmsyslog.conf
etc/shadow
Di chuyển đến thư mục ‘etc/’ vừa được giải nén ra . Lúc này bạn sẽ tìm thấy file ‘shadow‘ như trên các hệ thống Unix, file này chứa thông tin mật khẩu đã được hash của user trên hệ thống Linux/UNIX có user ‘root‘.
# cd etc
# vi shadow
root:$6$Yr02W8dJ$x0leg7YpspFgywlOUL0Axc47tB6iaYsL2nm5ZgvFcSV
CQT8ZBCvvAEAZLFHqUzTPRRt8VSfSOfiGfrwvR7ZTG/:13358:0:99999:7::
nobody:*:13358:0:99999:7:::
nfsnobody:!!:13358:0:99999:7:::
dcui:*:13358:0:99999:7:::
daemon:*:13358:0:99999:7:::
vpxuser:*:14875:0:99999:7:::
Hãy xoá nội dung cột thứ 2 của dòng user root ngăn cách bởi kí tự :. Lúc này user root mặc định sẽ không có thông tin mật khẩu để login. Nên xem như là login bằng user root không cần mật khẩu.
root::13358:0:99999:7::: nobody:*:13358:0:99999:7::: nfsnobody:!!:13358:0:99999:7:::
dcui:*:13358:0:99999:7::: daemon:*:13358:0:99999:7:::
vpxuser:*:14875:0:99999:7:::
Bước 4: nén nội dung thông tin mới thành file ‘state.tgz’
Giờ ta chỉ cần nén lại thư mục chứa file shadow thành local.tgz mới, rồi nén lại thành file state.tgz mới. Thay thế file state.tgz hiện có trên phân vùng /dev/sdb5 đang được mount.
# pwd
/tmp/etc
# cd
# pwd
/tmp
# tar czvf local.tgz etc
# tar czvf state.tgz local.tgz
# cp state.tgz /mnt/esxi/
cp: overwrite '/mnt/esxi/state.tgz'?
y
Sau đó umount phân vùng /dev/sdb5.
# cd /root
# umount /mnt/esxi
Rồi xử lý tiếp file ‘state.tgz‘ recovery/backup ở phân vùng /dev/sdb6 ‘/altbootbank‘. Lặp lại xử lý y như từ bước 1 đến bước 4 như ở phân vùng /dev/sdb5 đã làm trên. Sau khi xử lý xong thì hãy reboot lại hệ thống ESXi.
# reboot
Bước 5: login user root/ set lại mật khẩu mới
Tới những bước vô cùng dễ dàng rồi. Bạn chỉ cần bỏ boot LiveCD đi, boot vào OS ESXivào menu DCUI của ESXi. Ấn F2 để đăng nhập user root với ô mật khẩu để rỗn
Sau đó vào phần "Configure Password" để set mật khẩu mới.
Ở ô "Old Password" bạn để rỗng, còn lại thì điền thông tin mật khẩu mới nhé.
Nguồn: Blog Cường Quách (cuongquach.com)
>> Xem thêm: Giới thiệu Fog Computing và ứng dụng trong Hệ sinh thái IoT