AWS

【カスタムAMI】Windowsインスタンスでパスワードが取得できない場合の対処法

Champ

どうも、Champです🙌

先日、Windowsインスタンスを用いた技術検証を行っていたのですが、バックアップとして作成していたカスタムAMIからインスタンスを起動したところ、コンソール画面からパスワードが取得できない問題が発生しました。
普段、Windowsインスタンスを使用することが少ないため、「起動に時間がかかっているのか?」と大人しく待っていましたが、4分以上待っても状況は変わらず。。。😅
どうやら、これはカスタムAMIから起動した場合によく遭遇する問題のようです。
そこで今回は、カスタムAMIからWindowsインスタンスを起動した際によく遭遇する「コンソール画面からパスワードが取得できない問題」について解説します。

この記事のポイント

  • カスタムAMIでパスワードが取得できない原因を理解できる
  • 問題が発生した際の解決方法を学べる
  • 今後同じ問題を防ぐための設定方法がわかる

なぜこの記事を書いたか

先日、カスタムAMIからWindowsインスタンスを起動したところ、以下のエラーメッセージが表示されてました:

4分以上待っても状況は変わらずでした。。。
調査の結果、この問題の原因と解決方法がわかったので共有します!

なぜパスワードが取得できないのか?

なぜパスワードが取得できないのか?
それは、EC2のコンソール画面で取得できるパスワードは、インスタンスの起動時に自動生成されたパスワードのみであり、カスタムAMIから起動した場合は、元のAMIの管理者パスワードがそのまま引き継がれるためです。
通常のWindows AMIの場合とカスタムAMIの場合でどのような違いがあるのか、以下で確認していきましょう。

通常のWindows AMIの場合

  1. EC2インスタンスを起動
  2. 起動エージェント(EC2Launch v2など)が新しいパスワードを生成
  3. 生成したパスワードをインスタンスのキーペアで暗号化
  4. AWS管理領域に保存

カスタムAMIの場合

  1. EC2インスタンスを起動
  2. パスワード生成機能が無効化されており、元のAMIの管理者パスワードがそのまま引き継がれる
    → AWS管理領域にパスワードが保存されないため、EC2コンソールからパスワード取得ができない!

なるほど、EC2コンソール画面から取得できるパスワードはあくまで起動エージェントによって生成されたパスワードのみなのですね。
カスタムAMIから起動した場合は、元のAMIの管理者パスワードがそのまま引き継がれます。
そのため、EC2コンソールからパスワード取得ができないということですね。

解決方法

それでは、カスタムAMIから起動したWindowsインスタンスのパスワードがわからない場合、どうすればいいのでしょうか?
幾つか方法はありますが、ここではSystems Managerを使用する方法を紹介します。

Systems Managerを使用する方法

  1. まず、Systems Managerを用いて Windowsインスタンスに接続

    image.png (55.4 kB)
  2. 次に、以下のコマンドを実行
# 接続時はcmd起動が起動しているため、powershellを起動
powershell

# 以下のコマンドを実行し、次回の起動時に1回だけ実行されるように設定
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
  1. EC2コンソール画面に戻り、インスタンスを再起動
  2. 再起動が完了したら、EC2コンソール画面から「インスタンスに接続」画面を開き、RDPクライアントタブの「パスワードを取得」をクリック
  3. パスワードが取得できる

    image.png (47.6 kB)

まとめ

  • カスタムAMIでパスワードが取得できない問題は、Windows起動エージェントの設定が原因
  • Systems Managerを使用した解決方法が安全で確実

困ったときは、この記事を参考に解決してみてください!

参考情報

AUTHOR
champ
champ
記事URLをコピーしました