Hướng dẫn Reset mật khẩu Root cho vSphere ESXi

1208
31-01-2018
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.

Ảnh 1.

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.tgzlocal.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

SHARE