の対処法
試したのはCentOSだけど、Ubuntuとか他のディストリビューションでも可能と思う
sshできなくなったら復元は不可能
GCPみたいに画面を擬似的に映し出す機能はないし、ServersManVPSのようにiptablesを謎の力でリセットするなんてことはEC2では出来ない。
よってSSHのログインなしにはiptablesの設定をリセットできない
仕方ないので問題のインスタンスのディスクを抜いて他のインスタンスでマウントして修正、って方法でやるしかない
大まかな流れ
ここからはSSHログインできないインスタンスを対象のインスタンスと呼ぶ。
- 先に対象インスタンスと同じOSで適当にインスタンスを作成(ここでは名前を「mounter」とする
- 対象インスタンスをシャットダウン
- 対象インスタンスのディスクをデタッチ
- mounterにアタッチ
- mounterインスタンス起動 ディスクをマウントして修正
- mounterシャットダウン
- ディスクをデタッチして元の対象インスタンスにアタッチ 起動
細かい手順
AWS マネジメントコンソールへログイン
対象インスタンスと同じOSで適当にインスタンスを作成(ここでは名前を「mounter」とする
- 起動&ログインが確認できたら停止しておく
対象インスタンスを停止
停止を確認したら、左メニューより「ボリューム」を選択
対象ボリュームを右クリックして「ボリュームのデタッチ」を選択
ボリュームの状態が「available」になったら、mounterにアタッチ
- デバイスの項目はデフォルトの/dev/sdfのままでおk
mounterインスタンス起動 &ログイン
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を入力すること
対象インスタンスを起動
うまくいっていればこれでログインできるようになったはず