ESXi 7.x および ESXi 8.x で忘れたルートパスワードを回復する方法

0 株式
0
0
0
0

ESXi 7.x および ESXi 8.x で忘れたルートパスワードを回復する方法

ESXi のルートパスワードを忘れた場合、VMware では ESXi を再インストールすることをお勧めします。自動ロールアウトや一元管理プロファイルのない小規模環境では、すべてを手動で構成する必要があります。または、非公式の方法でパスワードをリセットすることもできます。vCenter 経由で ESXi を管理している場合は、vCenter の権限アカウントを使用してパスワードをリセットできます。また、ESXi ホストを AD ドメインのメンバーにすることも大きな助けとなります。これらのオプションが利用できない場合、システムはパスワードハッシュを暗号化された構成ファイルに保存し、ルートアクセスなしでは復号できないため、スタンドアロンホストのパスワードをリセットすることはできません。このため、ESXi 6.x 以降では、Linux からホストを起動して構成ファイルを直接編集するという従来の方法は機能しなくなりました。.

仮想ホスティングを使用した代替ソリューション

ここで紹介する方法は、2台目の(仮想)ホストを設定し、メインホストからキーを転送することです。これにより、SQLiteデータベース内の設定ファイルを抽出し、パスワードハッシュを変更できます。これを行うには、物理ホストと仮想ホストの両方のブートメディアを外部にマウントする必要があります。システムの実行中に設定ファイルを上書きすることはできず、次回の起動時に変更が拒否されるためです。ESXi設定ファイルへのアクセスにはLinuxシステムが適しており、ライブCDを使用するのが最も簡単な方法です。.

仮想ESXiのインストール

物理ホストの ESXi 構成を編集するには、パスワードを忘れていない、まったく同じバージョンの別の ESXi ホストが必要です。.

新しい仮想マシンを作成し、ゲスト オペレーティング システムとして [その他] を選択し、インストールする ESXi バージョンを選択します。.

次に、[設定のカスタマイズ] ページの [仮想ハードウェア] => [CPU] セクションで、[ハードウェア支援による仮想化をゲスト OS に公開する] オプションを有効にします。.

最後に、ESXiインストールISOファイルをDVDドライブにマウントし、「パワーオン時に接続」オプションを有効にします。このファイルは、まず「ストレージ」>「データストアブラウザ」>「アップロード」からESXiホストにアップロードする必要があります。.

state.tgz のバックアップを取る

次のステップは、物理ホスト上の state.tgz ファイルをバックアップすることです。このファイルには、ホストが次回の起動時に状態を復元するために必要な永続的な構成データが保存されています。.

このファイルには、忘れられたパスワードのハッシュと、その中の local.tgz ファイルを暗号化するために使用されたキーが含まれています。.

ホストをUSBから起動した場合(VMwareでは推奨されていません)、USBを取り外してWindowsコンピュータに接続してください。ホストが内蔵ディスクから起動する場合は、外付けドライブ経由でLinux環境を起動し、FATフォーマットのパーティション6を/mntにマウントします。例:
/dev/sdb6 /mnt をマウントする

次にファイル /mnt/ブートバンク/状態.tgz ローカルディスク(書き込み可能な場合)またはネットワークドライブに、次のような標準のLinuxツールを使用してコピーします。 アイテム番号: SCP-1811 または FTP コピーします。このファイルのバックアップコピーを作成することもお勧めします。.

state.tgzを仮想ESXiにコピーする

次に、バックアップファイルをディレクトリにコピーします /tmp 仮想ESXiホストを移行するには、例えば アイテム番号: SCP-1811. ファイルが Windows コンピュータ上にある場合、コマンドは次のようになります。

scp "C:\temp\state.tgz" [email protected]:/tmp/state.tgz

سپس به دایرکتوری /tmp در هاست هدف بروید و فایل state.tgz را استخراج کنید:

tar -zxvf state.tgz

وارد کردن کلید به state.tgz در ESXi مجازی

در مرحله بعد، فایل state.tgz مربوط به هاست مجازی را کپی، رمزگشایی و ویرایش می‌کنید تا کلید هاست فیزیکی را در آن جای دهید. برای این کار دستورات زیر را در shell هاست مجازی وارد کنید:

cp /bootbank/state.tgz /tmp/state.tgz
cd /tmp
tar -xzf state.tgz
rm state.tgz
vmtar -x local.tgz -o local.tar
tar -xf local.tar
rm local.tar
cp /tmp/encryption.info etc/vmware/
vmtar -c local.tar etc/vmware -o local.tgz
mv local.tgz state-mod.tgz

این دستورات فایل state.tgz رمزگذاری شده هاست مجازی را استخراج، رمزگشایی و بسته تنظیمات محلی (local.tgz) اصلاح‌شده ایجاد می‌کنند.

ویرایش فایل پیکربندی در هاست هدف

بعد، فایل /tmp/state-mod.tgz را به کامپیوتر خود کپی کنید:

scp [email protected]:/tmp/state-mod.tgz "C:\temp\state-mod.tgz"

سپس هاست مجازی را خاموش کنید تا بتوانید درایو VMDK آن را آزاد کنید.

مونت کردن VMDK هاست هدف در یک VM لینوکس

اکنون فایل VMDK این VM را به یک VM لینوکس متصل کنید و آن را روشن کنید. در ترمینال سیستم مهمان دستور

fdisk -l

باید دو پارتیشن bootbank شماره 5 و 6 را نمایش دهد.

انتقال state-mod.tgz به VM لینوکس و جایگزینی state.tgz

برای انتقال فایل state-mod.tgz که قبلاً ساختید، از کامپیوتر ویندوز (مسیر C:\temp) به ماشین لینوکس (دایرکتوری /home/thomas) با آدرس IP 10.0.7.140، می‌توانید از دستور زیر در ترمینال یا پاورشل ویندوز استفاده کنید:

توضیحات:

  • scp ابزار امن کپی فایل بین سیستم‌ها است.
  • [email protected] یعنی نام کاربری thomas روی ماشین لینوکس با آدرس IP مذکور.
  • /home/thomas/state-mod.tgz مسیر مقصد فایل در لینوکس است.

بعد از اجرای این دستور، سیستم از شما پسورد کاربر thomas را می‌پرسد و پس از وارد کردن آن، انتقال فایل آغاز می‌شود.
اگر در ویندوز از ترمینال معمولی استفاده می‌کنید و دستور scp شناسایی نمی‌شود، باید OpenSSH Client را نصب یا از ابزارهایی مانند PuTTY (pscp) استفاده کنید.

اگر خواستید می‌توانم راهنمای استفاده از این ابزارها هم برایتان بنویسم.

scp "C:\temp\state-mod.tgz" [email protected]:/home/thomas/state-mod.tgz

سپس پارتیشن‌های bootbank را مانت کرده و فایل state.tgz را با state-mod.tgz جایگزین کنید:

sudo su
mkdir -p /bootbank1
mkdir -p /bootbank2
mount /dev/sdc5 /bootbank1
mount /dev/sdc6 /bootbank2
cp /home/thomas/state-mod.tgz /bootbank1/state.tgz
cp /home/thomas/state-mod.tgz /bootbank2/state.tgz
umount /bootbank1
umount /bootbank2

سپس فایل VMDK را از VM لینوکس جدا کرده و هاست مجازی را دوباره راه‌اندازی کنید. حالا پیکربندی با کلید رمزگشایی شده هاست فیزیکی بارگذاری می‌شود.

در این مرحله، فایل state.tgz هاست فیزیکی که قبلاً کپی کرده‌اید را به دایرکتوری /tmp هاست مجازی منتقل کنید.

سپس فایل local.tgz.ve داخل آن را رمزگشایی کنید:

cd /tmp
cp /bootbank/state.tgz ./
tar -xzf state.tgz
rm state.tgz
vmtar -x local.tgz.ve -o local.tgz

جایگزینی هش پسورد در پایگاه داده پیکربندی ESXi

اکنون کار اصلی یعنی جایگزینی هش پسورد را انجام دهید. ابتدا فایل local.tgz را استخراج کنید:

tar -zxvf local.tgz

پس از استخراج، سه دایرکتوری .ssh، etc/ و var/ در /tmp خواهید داشت. پایگاه داده پیکربندی مربوطه در مسیر زیر است:

/tmp/var/lib/vmware/configstore/backup/current-store-1

در این دیتابیس باید هش پسورد root فراموش شده را با هش جدیدی که می‌دانید جایگزین کنید. چون فایل یک پایگاه داده SQLite است، می‌توانید با ابزار sqlite3 آن را ویرایش کنید. هش کنونی پسورد root را می‌توانید با دستور زیر ببینید:

/usr/lib/vmware/sqlite/bin/sqlite3 /tmp/var/lib/vmware/configstore/backup/current-store-1 "select * from config where Component='esx' and ConfigGroup = 'authentication' and Name = 'user_accounts' and Identifier = 'root'"

برای تولید هش جدید، می‌توانید از دستور زیر استفاده کنید:

openssl passwd -6

یا از یک ژنراتور آنلاین استفاده کنید.

سپس هش جدید را به صورت زیر وارد دیتابیس کنید:

/usr/lib/vmware/sqlite/bin/sqlite3 /tmp/var/lib/vmware/configstore/backup/current-store-1 "update config set UserValue='"name":"root","password_hash":"$6$s6ic82Ik$ER28x38x.1umtnQ99Hx9z0ZBOHBEuPYneedI1ekK2cwe/jIpjDcBNUHWHw0LwuRYJWhL3L2ORX3I5wFxKmyki1","description":"Administrator"' where Component='esx' and ConfigGroup = 'authentication' and Name = 'user_accounts' and Identifier = 'root'"

بازسازی state.tgz برای هاست فیزیکی

بعد از جایگزینی هش پسورد، باید فایل state.tgz را دوباره از اجزای اصلی که در /tmp استخراج کرده‌اید، بازسازی کنید. فایل جدید شامل دیتابیس اصلاح شده خواهد بود:

vmtar -c etc .ssh var -o local.tgz
vmtar -c local.tgz -o local.tgz.ve
tar -czf state-recover.tgz local.tgz.ve

فایل state-recover.tgz را باید به VM لینوکس منتقل کنید. اگر ESXi روی یک USB نصب شده، می‌توانید به سادگی آن را در VM لینوکس مانت کنید. اما اگر ESXi به صورت عادی از دیسک بوت می‌شود، هاست را از USB با توزیع لینوکسی مثل Ubuntu بوت کنید.

سپس همانند مرحله 5، پارتیشن‌ها را مانت کنید و فایل state.tgz را با state-recover.tgz جایگزین کنید:

sudo su
mkdir -p /bootbank1
mkdir -p /bootbank2
mount /dev/sdb5 /bootbank1
mount /dev/sdb6 /bootbank2
cp /root/state-recover.tgz /bootbank1/state.tgz
cp /root/state-recover.tgz /bootbank2/state.tgz
umount /bootbank1
umount /bootbank2

وقتی هاست فیزیکی با این پیکربندی جدید بوت شود، باید بتوانید دوباره با کاربر root وارد شوید.

نکته: اگر پسورد root هاست ESXi را فراموش کنید و نتوانید از طریق vCenter یا اکانت AD ریست کنید، تنها گزینه رسمی، نصب مجدد است. اما یک روش غیررسمی وجود دارد که با استفاده از هاست دوم، پیکربندی هاست اول را ویرایش می‌کند.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

あなたも気に入るかもしれない