EC2でキーペアをなくしてインスタンスに接続できないとき…
はじめに
AWSの鍵ペアをなくした!ということはまだ発生していないのだが、
SSHフォルダを削除したとか、紛失した場合に備えてメモをしておく。
環境
|
|
シチュエーション
下記のような状況でのシミュレーションを行う。
- AWS EC2インスタンスを作成
- 鍵ファイルを更新しようとしたら誤って更新の方法を間違えた。
or 鍵ペアを紛失した
準備
シチュエーションを再現するためにインスタンスを作成した。
鍵ペアを紛失したインスタンスは test
という鍵を使用している。
現在接続ができる状態。
再現
インスタンスに入り、 .ssh
フォルダを全て削除する。
|
|
もちろん接続できなくなる。
解決方法
この状態になった場合どうすれば良いのか?
答えは、AWSのドキュメントに書いてある。
最初の起動後に SSH キーペアを紛失した場合、Amazon EC2 インスタンスに接続するにはどうすればよいですか?
参考: https://repost.aws/ja/knowledge-center/user-data-replace-key-pair-ec2
それではこの手順と同じように実施してみることにする。
1. 新しいキーペアの作成
左のメニューから「キーペア」を選び、test2
として作成する。
下記のように test
, test2
のキーペアが一覧に表示される。
2. 秘密鍵から公開鍵の情報を取得する。
ローカル環境 or EC2の余ってるインスタンスで下記を実行する。
|
|
Git bash
があるのでこれを利用する。
|
|
整理すると下記の情報を現在持っている。
|
|
これらは接続できなくなったインスタンスに配置する用の鍵
3. EC2コンソールを開く。
4. 対象のインスタンスを停止する。
(test
インスタンスを停止する。)
5. [アクション]、[インスタンスの設定]、[ユーザーデータを編集] の順に選択する。
6. スクリプトを「ユーザーデータ」のテキストエリアに貼り付ける。
公式のソース
|
|
公式のテンプレートからの変更箇所
|
|
7. 保存をする
8. インスタンスを起動する。
9. cloud-init フェーズが完了したら、パブリックキーが置き換わっていることを確認する。
ログインはできた!
そして、鍵が置き換わっている(というより作成)されていることを確認。
10. インスタンスを停止
※インスタンスを停止しないとユーザデータを編集できないため
11. 再度「5」と同じ手順でユーザデータの編集画面に移動する
12. ユーザデータを空にして保存する。
13. インスタンスを起動する。
一応再度確認しておく。
問題なさそうですね。
これで後は紛失した or 使わなくなったキーペアをAWSコンソールから削除すればよいかと思います。
参考
- 最初の起動後に SSH キーペアを紛失した場合、Amazon EC2 インスタンスに接続するにはどうすればよいですか?
https://repost.aws/ja/knowledge-center/user-data-replace-key-pair-ec2
おわりに
ドキュメントを見ていくと他にも方法はあるようでしたが、EC2のみを使用して復旧したいなと考えていたので、こちらの方法を記載いたしました。
公式ドキュメントがそのまま復旧手順でつまずくことはなかったです。困ったらドキュメントをまずは見ようということですね。