AWSの秘密鍵を紛失した話

AWSとは

非常に簡単に言ってしまえば、アマゾンが運営しているサーバのこと。さくらインターネットとかあるけど、あれのアマゾン版。

アマゾンの本社はもちろんアメリカだけど、国内にもデータセンターがあるので、日本からアクセスしても遅延があるとかそういったことはない。

AWSでは一年間ほぼ無料でサーバを借りられるシステムがあるので、ぼくはそれでこのHPを運営しています。

無料サーバなのでスペックはそんなに高くないのですが、WordPressを表示させるだけならわけないし、なにより帯域が太いのとグローバルIPにデフォルトで対応しているのがいいところですね。

ログイン方法

そんなAWSではサーバを借りたときに「インスタンス」として借りることになります。

そのインスタンス内ではLinuxやWindows(最初にどちらか選べるが、Windowsの方がかなり高いので基本はLinux一択)のOSが動いているわけです。

で、インスタンスを借りた時点で「このインスタンスには鍵でログインします」っていうのを登録しないとだめなんですね。

パスワード認証は許可されていないのだ。

ぼくはそこでちゃんと鍵を登録して、今までそれでログインできていたから問題がなかったのですが…

Windowsの初期化

ぼくはパソコンがファイルでいっぱいになってきたなと思うといちいちファイルを探して消すのではなくてWindowsごと毎回フォーマットしています。

だってどのファイルが必要かどうかなんて調べるのめんどくさいし。

今どきのPCならOSのインストールは15分くらいで終わりますし、どうせ消えても困らないファイルしかないのでこっちのほうが手っ取り早いです。

が、これをしていたせいで悲劇が起きました。

そう、AWSにログインするための秘密鍵をSSDもろともフォーマットで削除してしまったのです。

これは困りました。秘密鍵なくしてAWSへのログインはできません。

インスタンスの管理(削除や起動)などはAWSのマネージャから行えますが、ログインできないのでは不測の事態が起きたときに対応しようがありません。

マネージャ自体にはログインできているので、インスタンスの鍵登録をやり直そうと思ったのですがそれはできない仕様のようで…

こりゃやっちまったか!?

解決方法

調べてみたところ、鍵の再登録はできないので、

  1. 「インスタンスのクローンを作成」
  2. 「古いインスタンスを削除」
  3. 「クローンからインスタンスを作成」
  4. 「インスタンス作成時に新しい鍵を登録」

という手順をふまなければいけないようです。めんどくさいのですが、セキュリティの観点からみればこっちの方が安全ですね。

クローンの作成

まずはクローンを作るために、インスタンスのImageを作成します。

インスタンスのタイプにも依ると思いますが、t2.microだと10分くらいで終わりました。

インスタンスのImage(バックアップ)

Imageがとれたら、左のタブからAMIsを選択して、先程バックアップしたImageから新しくインスタンスを作成しましょう。

右クリックしてLaunchを押せば新しいインスタンスができます。

そしてそのときに新しく鍵登録を行うのだ!!

自分で作成した鍵を使いたい場合

AWSでは自動で鍵も生成できますが、どうせなら自分で作成した鍵を使いたいという人もいらっしゃるので、やり方をメモしておきます。

ちなみに、AWSが受理できる鍵の仕様は以下の通り

  • RSAのみ対応
    • DSAやECDSAは使えない
  • 鍵長は1024、2048、4096
    • セキュリティ上、512とかは使用不可
  • PEM形式である必要がある
  • Base64でエンコードされたDER形式

この仕様を満たす鍵はssh-keygen -t RSA -b 4096 -m PEMというコマンドで作成できます。

入力したらあとはエンターキーを押していれば秘密鍵と公開鍵のペアが生成されます。

2048Bitでも相当安全だと思うけれど、どうせなら一番強度を高くしておこうという試みだよ。

解決

やってみると復旧自体はとても簡単で、バックアップを取っておいてよかったなあってなりました。

そんなことよりもAWSのサーバの空き容量が10%を切っていてかなりまずい感じです。

あと500MBくらいしか空いていないので、この調子で記事を書いていたりするとだいたいあと半年後に容量が100%になって記事がかけなくなってしまいます。

カンパをお願いするのもめんどくさいので、ワンランク上のインスタンスに変えるとどのくらい費用がかかるのか考えてみようと思います。

記事は以上。