Windowsインスタンスのキーペアを紛失してしまった貴方へ

2022.03.31

こんばんは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。

皆さんはキーペアを紛失した経験、ありますか?

今回はとあるWindowsインスタンスに使用していたキーペアを紛失した際の応急対応を記事にしてみました。

いきなりまとめ

  • Windowsインスタンスに紐付けたキーペアを紛失し、インスタンスの再起動を行わずにRDP接続したい場合は net user コマンドでログインユーザのパスワードを変更出来ます。
  • SSMのオートメーション AWSSupport-ResetAccess を使うとログインユーザーのパスワードはリセットされるがリセット後のパスワードは分からない。

前提条件

  • Windowsインスタンスのキーペアを紛失したが新しいインスタンスの再起動は出来ない。
    • 応急対応で良いのでインスタンスにアクセスしたい。
  • 対象のインスタンスにAWS Systems Manager(SSM) Session Managerで接続可能であること。

救出作戦開始

上述のまとめにも書いていますが、最終的にはSSM Session Managerでインスタンスに乗り込み、net user "user" "password" というコマンドを実行してログインユーザーのパスワードを変更しました。

それではWindowsインスタンスの救出作戦を開始しましょう。

いざレスキュー!

「EC2 キーペア 紛失」と検索して出てきた下記ブログを参考に、SSMのオートメーション AWSSupport-ResetAccess を使って救出を試みました。

Linuxインスタンスでは秘密鍵がSSMパラメータストアに出力されるそうなので、この時はWindowsインスタンスも似た感じで解決出来るかな?と思ってました。

SSH用の秘密鍵を無くしてしまった方へ。Systems MangerでEC2の秘密鍵を追加してみた

実行から約25分でオートメーションの作業が終わりました。AMIを作成しているからかLinuxインスタンスでの実行より時間がかかってますね。

結果としては、Linuxインスタンスのように新たな秘密鍵は発行されず、2つのAMI(Pre、Post)が作成されただけでした。

よくドキュメントを参照すると、下記のような記述がありました。

EC2 キーペアを紛失した場合: この問題を解決するには、AWSSupport-ResetAccessランブックを使用して現在のインスタンスからパスワード対応のAMIを作成し、このAMIから新しいインスタンスを起動して、所有するキーペアを選択します。

引用:チュートリアル: EC2 インスタンスでのパスワードと SSH キーのリセット - AWS Systems Manager

後で検証したところ、確かにキーペアで復号して取得するログイン用のパスワードも変更されていました。

どうやらWindowsインスタンスの場合は新たな接続用の秘密鍵は作成されず、ログインパスワードの変更&パスワード対応のAMI作成が行われるようです。

残念。

応急対応

本来であれば上述のオートメーション等で既存のインスタンスのAMIを作成し、新しく作成したキーペアでインスタンスを作り直すべきなのでしょう。

ですが今回は応急対応として net user "user" "password" コマンドを使用してログインユーザのパスワードを変更しました。

PS C:\Windows\system32> net user Administrator de!mo-passw@rd1234
コマンドは正常に終了しました。

パスワードが変更出来たようですね。

はい、無事にRDP接続が出来ることも確認出来ました。とりあえず一件落着。

ちなみにこちらも後で検証したのですが、キーペアで復号して取得するパスワードは変更されていませんでした。当たり前ですがキーペアで取得した変更前のパスワードではログイン出来ませんでした。

最後に

そもそもキーペアを紛失しないようにすることが大事ですが、もしキーペアを紛失し、かつ対象のインスタンスにどうしてもアクセスしなければいけない場合には本記事でご紹介した応急対応を試してみてはいかがでしょうか。

ただし、上述の通りこの対応を行うとキーペアで復号したパスワードと実際のパスワードが乖離してしまいます。(まあ復号するためのキーペアを紛失してしまってるわけですが。。。)

やはりベストプラクティスは対象のインスタンスからAMIを作成し、新たなキーペアでインスタンスを再作成することでしょう。

本記事がどなたかのお役に立てれば幸いです。

以上、べこみんでした。