はじめに
AWSの鍵ペアをなくした!ということはまだ発生していないのだが、
SSHフォルダを削除したとか、紛失した場合に備えてメモをしておく。
環境
Windows 10 Professional
AWS (t4g.nano)
シチュエーション
下記のような状況でのシミュレーションを行う。
- AWS EC2インスタンスを作成
- 鍵ファイルを更新しようとしたら誤って更新の方法を間違えた。
or 鍵ペアを紛失した
準備
シチュエーションを再現するためにインスタンスを作成した。
鍵ペアを紛失したインスタンスは test
という鍵を使用している。
現在接続ができる状態。
再現
インスタンスに入り、 .ssh
フォルダを全て削除する。
sudo rm -fr ~/.ssh
解決方法
この状態になった場合どうすれば良いのか?
答えは、AWSのドキュメントに書いてある。
最初の起動後に SSH キーペアを紛失した場合、Amazon EC2 インスタンスに接続するにはどうすればよいですか?
参考: https://repost.aws/ja/knowledge-center/user-data-replace-key-pair-ec2
それではこの手順と同じように実施してみることにする。
1. 新しいキーペアの作成
左のメニューから「キーペア」を選び、test2
として作成する。
下記のように test
, test2
のキーペアが一覧に表示される。
2. 秘密鍵から公開鍵の情報を取得する。
ローカル環境 or EC2の余ってるインスタンスで下記を実行する。
ssh-keygen -y -f /path_to_key_pair/my-key-pair.pem
Git bash
があるのでこれを利用する。
ssh-keygen -y -f test2.pem > test2.pub
整理すると下記の情報を現在持っている。
test2.pub: 公開鍵
test2.pem: 秘密鍵
これらは接続できなくなったインスタンスに配置する用の鍵
3. EC2コンソールを開く。
4. 対象のインスタンスを停止する。
5. [アクション]、[インスタンスの設定]、[ユーザーデータを編集] の順に選択する。
6. スクリプトを「ユーザーデータ」のテキストエリアに貼り付ける。
公式のソース
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [users-groups, once]
users:
- name: ec2-user
ssh-authorized-keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAJ9hjdv0f1FZ5f4NkA22aEJ8kXhbST3SHkN6K0Ww8eN
公式のテンプレートからの変更箇所
- - name: username
+ - name: ec2-user
- - PublicKeypair
+ - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAJ9hjdv0f1FZ5f4NkA22aEJ8kXhbST3SHkN6K0Ww8eN
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のみを使用して復旧したいなと考えていたので、こちらの方法を記載いたしました。
公式ドキュメントがそのまま復旧手順でつまずくことはなかったです。困ったらドキュメントをまずは見ようということですね。