【カスタムAMI】Windowsインスタンスでパスワードが取得できない場合の対処法
どうも、Champです🙌
先日、Windowsインスタンスを用いた技術検証を行っていたのですが、バックアップとして作成していたカスタムAMIからインスタンスを起動したところ、コンソール画面からパスワードが取得できない問題が発生しました。
普段、Windowsインスタンスを使用することが少ないため、「起動に時間がかかっているのか?」と大人しく待っていましたが、4分以上待っても状況は変わらず。。。😅
どうやら、これはカスタムAMIから起動した場合によく遭遇する問題のようです。
そこで今回は、カスタムAMIからWindowsインスタンスを起動した際によく遭遇する「コンソール画面からパスワードが取得できない問題」について解説します。
この記事のポイント
- カスタムAMIでパスワードが取得できない原因を理解できる
- 問題が発生した際の解決方法を学べる
- 今後同じ問題を防ぐための設定方法がわかる
なぜこの記事を書いたか
先日、カスタムAMIからWindowsインスタンスを起動したところ、以下のエラーメッセージが表示されてました:
4分以上待っても状況は変わらずでした。。。
調査の結果、この問題の原因と解決方法がわかったので共有します!
なぜパスワードが取得できないのか?
なぜパスワードが取得できないのか?
それは、EC2のコンソール画面で取得できるパスワードは、インスタンスの起動時に自動生成されたパスワードのみであり、カスタムAMIから起動した場合は、元のAMIの管理者パスワードがそのまま引き継がれるためです。
通常のWindows AMIの場合とカスタムAMIの場合でどのような違いがあるのか、以下で確認していきましょう。
通常のWindows AMIの場合
- EC2インスタンスを起動
- 起動エージェント(EC2Launch v2など)が新しいパスワードを生成
- 生成したパスワードをインスタンスのキーペアで暗号化
- AWS管理領域に保存
カスタムAMIの場合
- EC2インスタンスを起動
- パスワード生成機能が無効化されており、元のAMIの管理者パスワードがそのまま引き継がれる
→ AWS管理領域にパスワードが保存されないため、EC2コンソールからパスワード取得ができない!
なるほど、EC2コンソール画面から取得できるパスワードはあくまで起動エージェントによって生成されたパスワードのみなのですね。
カスタムAMIから起動した場合は、元のAMIの管理者パスワードがそのまま引き継がれます。
そのため、EC2コンソールからパスワード取得ができないということですね。
解決方法
それでは、カスタムAMIから起動したWindowsインスタンスのパスワードがわからない場合、どうすればいいのでしょうか?
幾つか方法はありますが、ここではSystems Managerを使用する方法を紹介します。
Systems Managerを使用する方法
- まず、Systems Managerを用いて Windowsインスタンスに接続
- 次に、以下のコマンドを実行
# 接続時はcmd起動が起動しているため、powershellを起動
powershell
# 以下のコマンドを実行し、次回の起動時に1回だけ実行されるように設定
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
- EC2コンソール画面に戻り、インスタンスを再起動
- 再起動が完了したら、EC2コンソール画面から「インスタンスに接続」画面を開き、RDPクライアントタブの「パスワードを取得」をクリック
- パスワードが取得できる
まとめ
- カスタムAMIでパスワードが取得できない問題は、Windows起動エージェントの設定が原因
- Systems Managerを使用した解決方法が安全で確実
困ったときは、この記事を参考に解決してみてください!