dskst's diary

Life and Tech Blog

EC2 に ssh できない -> EBS 付け替えてレスキューした話

f:id:dskst9:20160320215617p:plain

EC2 に ssh できなく、ルードデバイスの EBS を他 EC2 からレスキューした。

この記事で伝えたいのは
EBS を別の EC2 にアタッチして調査するのは面倒じゃないよ!
ってこと。

私が ssh できなかった原因は、 /home がブロックデバイスの EBS に対してリンクされていて、 EC2 の停止により EBS がデタッチされてしまい、 /home が消失してしまった。(自動マウントの設定がされていなかったため)
そのため、ssh をしても Permission denied (publickey). で弾かれていた。

そもそも

再起動、停止では動作が異なる。
再起動だとマウントしたボリュームは外れないので、今まで気づかなかった。

docs.aws.amazon.com

上記には書いていないけど、 再起動だと mount は保持される。

調査...

  1. 22番ポートが開いているか
    $ telnet 192.0.2.1 22 で Connected になるか。(IPは仮)
    今回私の事象は22番ポートは問題ないので Connected になった。
  2. sshデバッグする
    ssh -vvv 192.0.2.1 22 でどのようなデバッグがでるか。
    今回私の事象は証明書を読み込めていない感じだった(詳細は忘れた)

以上から /home の中を見てみないとわからんという話になった。
めんどうだなーと最初は思っていたが、やってみたら意外にそうでもなかった。

やったこと

  1. 対象のEC2(以下、対象EC2) をストップ
  2. 対象EC2 のルートデバイスのボリュームをデタッチする
  3. デタッチしたボリュームからスナップショット作成
  4. スナップショットから EBS を作成(以下、対象EBS)
  5. 調査用の EC2 (以下、調査用EC2)を作成する
  6. 調査用EC2 に 対象EBS をブロックデバイスとしてアタッチする
  7. 調査用EC2 を起動して 対象EBS を mount する
  8. 対象EBS 内の問題点を修正する
  9. 調査用EC2 を停止して 対象EBS をデタッチする
  10. 対象EC2 のルートデバイスに 対象EBS をアタッチする
  11. 対象EC2 を起動して事象が解消されれば成功

一箇所躓いたのが、ルートデバイスとしてアタッチする方法が分からないかったところ。以下に対応方法はまとめておいた。

qiita.com

さいごに

上記のように単純に外して、付ける。
ただそれだけなので、めんどくさいと躊躇している暇があればとっととやったらすぐ終わるものだった。

参考

docs.aws.amazon.com

qiita.com

dev.koba206.com