参考記事
状況
これは私がCircleCIを導入する際に、EC2にログインできなくなった事件が発生したので、その際の対処法についてまとめたものです。
ログインできなくなった原因は、CircleCIの設定を行う際に、EC2内の.ssh/authorized_keys
配置されている公開鍵を削除してしまった事に由来します。この問題はEC2の場合、少しややこしい手順を踏みますが、復旧可能です(まじで詰んだと思いました。)。
解決手順
解決手順は1個目のQiitaの記事を参考にさせて頂きました。
注意点としましては、調査用(新しく作成する)EC2の認証鍵の作成の際に、既存の鍵を使用する
、を選択する事です。これで自身のパソコン内にあるpemファイルを用いてログイン可能にする為、その為に必要な公開鍵がEC2内に作成されます。
- 該当のEC2インスタンスを止めます。
- ディスクをデタッチして外します。
- 自分がrootになれる別のEC2インスタンスに、2のディスクをアタッチします。
- そのEC2インスタンスにログインして、2のディスクをマウントします。
- マウントしたディスクの中でauthorized_keysファイルを作ります。
- ディスクをアンマウントしてログアウトします。
- そのディスクを元のEC2インスタンスにアタッチして起動します。
1~4の更なる詳細な手順は、2個目の記事を参考にすると進行可能です。
4の作業の際にに新しいEC2に対し、既存の(ログインできなくなった)EC2ディスクをマウントする必要がありますが、警告が出てマウントすることができません。
その対処法は自分の場合、3つ目の記事を参考に、-o nouuid
オプションを追記する事でマウント可能になりました。
そして5の作業について自分の場合は、sudo cat authorized_keys
コマンドで中にある公開鍵をコピーし、マウントしたディスク内の.ssh/authorized_keys
内にペーストする作業を行いました。
新規作成したEC2においても同一の公開鍵を利用する設定にしている為、同一の公開鍵が生成され、その値をauthorized_keys
に戻す事で、データを復旧させることができる、という流れです。
あとは引用記事を参考に、ディスクをアンマウント、新規EC2を停止、ディスクを既存のEC2にアタッチする事で、再ログインが可能になります。
最後に
まじで焦りました。認証周りの設定に関しては、勢いで行動するのをやめよう。