動かざることバグの如し

殿、温めておいたバグがこちらでございます

iptablesミスってEC2インスタンスにSSHログイン出来なくなった時の対処法

の対処法

試したのはCentOSだけど、Ubuntuとか他のディストリビューションでも可能と思う

sshできなくなったら復元は不可能

GCPみたいに画面を擬似的に映し出す機能はないし、ServersManVPSのようにiptablesを謎の力でリセットするなんてことはEC2では出来ない。

よってSSHのログインなしにはiptablesの設定をリセットできない

仕方ないので問題のインスタンスのディスクを抜いて他のインスタンスでマウントして修正、って方法でやるしかない

大まかな流れ

ここからはSSHログインできないインスタンスを対象のインスタンスと呼ぶ。

細かい手順

lsblkすると以下のように2つ以上のディスクが表示されるはず

# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
xvdf    202:80   0   8G  0 disk
└─xvdf1 202:81   0   8G  0 part

マウント さっきアタッチしたのは↑でいう/dev/xvdf1になる

mkdir /mnt/disk2
mount /dev/xvdf1 /mnt/disk2/

chrootでログイン

chroot /mnt/disk2/

とりあえずiptables無効化 iptablesのファイル自体を修正したほうがいいかもしれない

chkconfig iptables off

脱出

exit
  • mounterインスタンスを停止

  • mounterからデタッチして対象のインスタンスにアタッチ

    • ここで指定するデバイス項目はさっき控えた/dev/xxxを入力すること
  • 対象インスタンスを起動

  • うまくいっていればこれでログインできるようになったはず

参考リンク