LoginSignup
6
7

More than 5 years have passed since last update.

EC2でsshやsudoできなくなった場合の対処法

Posted at

EC2でデフォルトユーザを消したり、visudoを使わずに編集ミスした場合、sudoが使えなくなります。つまり、インスタンスのシャットダウンすら出来なくなります。
または、authorized_keysを間違えて消した場合などは、SSHの代替手段がないのでログインすらできなくなります。

そんな時でも、ルートデバイスがEBSなら、ディスクを他のインスタンスに付け替えられるので簡単に復旧できます。以下の例はubuntuですが、他のディストリビューションでも同じことが出来ます。

手順

問題が起きたインスタンスをAWSコンソールから停止

ログインできないので、コンソールから止めるしか無いです。

image.png

EBSのデタッチ

アタッチしているインスタンスが停止すると、デタッチできるようになります。

image.png

新規インスタンスの作成

一時的な救出用のインスタンスを作ります。

image.png

EBSアタッチして、マウントする

先程作った救出用インスタンスにデタッチしたEBSをアタッチして、適当なディレクトリにマウントすると、間違えて操作したインスタンスのルートディレクトリが操作できます。(ここはrootで作業)

root@ip-10-0-0-44:/home/ubuntu# mkdir hoge
root@ip-10-0-0-44:/home/ubuntu# mount /dev/xvdf1 hoge
root@ip-10-0-0-44:/home/ubuntu# ls hoge/
bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  srv  tmp  var      vmlinuz.old
boot  etc  initrd.img  lib             lost+found  mnt    proc  run   snap  sys  usr  vmlinuz

sudoersをいい感じに編集して、シャットダウン

アンマウントするか、綺麗にインスタンスを落とします。

nano hoge/etc/sudoers.d/90-cloud-init-users
umount hoge
halt

EBSをルート用にアタッチ

元のインスタンスにEBSを戻します。基本的には先程と逆の操作ですが、適当な名前でアタッチすると起動できないので、予約済みのデバイス名を参考に戻します。
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/device_naming.html#available-ec2-device-names

ubuntuでは/dev/sda1です。アタッチせずに起動するとエラーで教えてくれるようなので、それを参考にしても良いかも。

image.png

起動すると、なおっていますね。

juntaki@ec2 ~> sudo su
root@ec2:/home/juntaki#

まとめ

これで、EC2で設定ミスをしても戻せます。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7