仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

Amazon Linux 2仮想マシンのログインパスワードを手動で変更する方法

Amazon Linux 2をご存じでしょうか。Amazonが開発したAWS向けオペレーティングシステムで、無料で提供されており、テスト用の仮想マシンアプライアンスまで用意されています。筆者も以前の記事で紹介したように、実際に試してみました。

しかし、テスト中に一つ問題にぶつかりました。それがログインです。通常、EC2インスタンスにはSSHを使ってログインします。では、オフライン状態の仮想マシンには何を使えばよいのでしょうか。root/ec2-userの組み合わせをネットで探しても見つからず、シングルモードでパスワードを変更する定番の方法も機能しませんでした。そこで本記事では、Amazon Linux 2仮想マシンのログイン認証情報を手動で変更し、テストをすぐに開始できるようにする方法を解説します。

ログインプロンプト

イメージをダウンロードして起動。ログイン画面が表示されます。さて、ここからどうしましょう?

Amazon Linux 2仮想マシンのログインパスワードを手動で変更する方法

シングルモードは使えない

長年Linuxを使っている方なら、この技をご存じでしょう。システムをシングルモードで強制起動し、ルートファイルシステムを読み書き可能な状態で再マウントし、パスワードを変更して再起動する。誰もが何度もやったことがあるはずの手順です。しかし、残念ながら今回は通用しませんでした。

ブートメニューの起動オプションにinit=/bin/bashを追加してみましたが、カーネルパニックが発生しました。原因がカーネルにあるのか、Amazon Linuxが採用しているsystemdのせいなのか、それとも別の要因なのかは不明ですが、昔ながらの実績ある方法は役に立ちませんでした。

ネットで調べても、無数のinit=/bin/bash関連の記事から新しい情報は得られず、RHEL 7のパスワード変更方法について詳しく書かれた記事を見つけた程度でした。そのチュートリアルでは、RHEL 6からRHEL 7への移行に伴う変化や、これがRHCSA試験の範囲であることにも触れられていました。え?シンプルさはどこへ行ってしまったのでしょうか。

まあ、愚痴はこのくらいにしておきましょう。記事によると、カーネルの起動行にrd.breakを追加すると効果があるとのこと。Amazon Linux 2はRHELベースなので、試してみる価値はあります。しかし、結果は何も起こらず。Amazon Linuxは平然と通常どおり起動しました。これでも望む結果は得られませんでした。

Amazon Linux 2仮想マシンのログインパスワードを手動で変更する方法

Amazonには、この方法についてごく短く曖昧な説明があるだけです。cloud-init設定用のISOを作成せよと言うだけで、詳細は仮想化プラットフォームのドキュメントを参照せよと案内されるのみ。正直、あまり役に立ちません。

VDIを手動でマウントする

これは以前にも取り上げたテーマです。仮想マシンのディスクやパーティションをループバックデバイスとしてマウントし、ファイルシステムの中身を編集する方法を紹介しました。partxを使ってKVMマシンをクローンしたこともありました。今回も同じ発想で作業を行いますが、仮想マシンイメージのファイルシステムをマウントして扱う、もう一つの方法もお見せします。

必要なのはqemu-nbdツールです。同様の働きをするユーティリティで、多くのディストリビューションではqemu-kvmパッケージに含まれています。まずインストールし、次にツールを使用します。実行に失敗した場合は、nbd(ネットワークブロックデバイス)モジュールを手動でロードする必要があるかもしれません。コマンドの順序は以下のとおりです(sudoまたはrootとして実行):

<パッケージマネージャー> install qemu-kvm
modprobe nbd
qemu-nbd -c /dev/nbd0 <仮想マシンのvdiハードディスク名>

ダウンロードしたAmazon Linux 2のvdiイメージの場所を特定し、上記のコマンドにマッピングしてください。必ずしも/dev/nbd0を使う必要はなく、任意の番号を使用できますが、順番に作業を進める方がシンプルで管理しやすくなります。

ブロックデバイスがマッピングされると、そのパーティションは/dev/nbd0p*として現れます。番号は実際のハードディスクのパーティション構成(p1、p2など)と一致します。これもpartxで行った作業とほぼ同じです。次のステップは、目的のパーティションを任意の場所にマウントすることです:

mount /dev/nbd0pX /mountpoint

このコマンドを実行すると、Amazon Linux 2のvdiファイルシステム(パーティション)の内容が、指定したマウントポイント(例:/mnt)以下に展開されます。これで中身を自由に操作できるようになりました。

/etc/shadowファイルを編集する

次にパスワードを変更します。手順は以下のとおりです。まず、仮想マシンを実際に動かしている側のLinuxで新しいユーザーを作成します。名前は何でも構いません。ここではamazonとしましょう。パスワードを設定したら、/etc/shadowファイルを開きます。パスワードは暗号化され、2つのコロン区切り文字の間に長いハッシュとして表示されているのが分かるでしょう。これこそが必要な情報です。例えば次のような形式です:

amazon:$123456$dedoimedo:11111:0:99999:6:::

次に、先ほどのAmazon Linux 2ファイルシステムのマウントポイント(例:/mnt)に移動し、shadowファイルをテキストエディタで開きます:

<テキストエディタ> /mnt/etc/shadow

デフォルトユーザーの名前がec2-userであることに気づくでしょう。知らなかったとしても、今はもう知りましたね。パスワード用のハッシュも記載されています。元の値が何なのかは分かりませんし、重要でもありません。このハッシュを、ローカルで作成したamazonユーザーのハッシュに置き換えます。ファイルを保存し、vdiをアンマウントすれば準備完了です。

Amazon Linux 2仮想マシンのログインパスワードを手動で変更する方法

再起動、ログイン、そして作業開始

仮想マシンを再度起動します。ログインプロンプトが表示されたら、正しいユーザー名と、先ほど仕込んだパスワードでログインします。これでログイン成功です。仮想マシンアプライアンスでの作業を始められます。今回はAmazon Linuxで実施しましたが、この手法はあらゆるLinuxディストリビューションとファイルシステムに応用できます。通常の方法でシステムメンテナンスができない場合でも、この技を使えば制限を回避し、ファイルシステムに必要な変更を加えることができます。仮想マシン環境では特に便利です。KVMで実証済みであり、今回VirtualBoxでも有効であることを確認できました。

Amazon Linux 2仮想マシンのログインパスワードを手動で変更する方法

まとめ

Amazon Linux 2を試してみたいけれど、ログイン認証情報の壁にぶつかっていて、独自のISOイメージを作成したり、EC2の正式な利用手順を調べたりする気になれないなら、partxやqemu-nbdを使って仮想ハードディスクをマウントし、shadowファイルを直接編集する方法があります。シングルモードやレスキューモードでの起動がうまくいかない場合の、確実な回避策となるでしょう。

Amazon Linux 2は興味深い機能を備えた魅力的なオペレーティングシステムです。初期ログイン/パスワードのような技術的・官僚的な不具合のせいで見逃すのはもったいないでしょう。他のディストリビューションと同じように、デフォルトの認証情報が用意されていてもいいはずです。さらに、init=/bin/bashに関わるLinuxインフラ全体の変化も状況を難しくしています。本記事が、読者の皆さんに必要な技術的なノウハウと冒険心を与え、旅立ちの一助となれば幸いです。何より、この方法はディストリビューションに依存しません。どんな仮想マシンアプライアンス、どんなファイルシステムでも、テストに必要な変更を加えることができます。それでは、探索をお楽しみください。

それでは、また。

  1. Linux版VMware Workstationが凄い! インストール手順からUnityモードまで徹底解説

    私は仮想化製品、特にVMwareの大ファンです。Player、Server、ESXiと、複数のOSを同時に実行したいユーザーにとって、創造的で実用的なソリューションを数多く提供してくれる存在です。VMware製品は仮想化分野のリーダーとして際立っています。PlayerやServerのように個人利用なら無料で使える製品もあり、それらはESXやWorkstationといった上位のフル機能版へ誘導するための入口となっています。ESXは家庭用途には明らかにオーバースペックですが、Workstationは非常に魅力的な選択肢と言えます。はじめに「PlayerやServerという無料製品で十分なのに、なぜ

  2. 仮想マシンで3Dアクセラレーション 第3回:Linuxホスト×Linuxゲスト環境でVMGLに挑戦 ― 果たして可能なのか?

    仮想化に関するシリーズ第3回となる本記事は、おそらくシリーズ中で最も難易度の高い内容です。これまで、VMware製品ではDirectXサポートが、VirtualBoxではOpenGLサポートが提供されてきましたが、いずれもWindowsゲスト限定のものでした。ホスト側のOSは問われません。では、Linuxゲストではどうなるのでしょうか? 当初は不可能だと考えていました。ところが、linux.comの記事で、VMGLというアプリケーションを使えばLinuxゲストでも3D描画を楽しめると知りました。非常に有望に見えた一方で、難しそうでもありました。5〜10分の手軽なハックではなく、かなり大掛かりな