【備忘録】AWS EC2へのSSHで`port 22: Operation timed out`になっちゃう現象を調査した
何が起きたか
タイトル通りで、AWSのEC2インスタンスを作ったのですがSSHが繋がりませんでした。
$ ssh -i ~/.ssh/sample.pem ec2-user@ec2-sample.compute-1.amazonaws.com
ssh: connect to host ec2-sample.compute-1.amazonaws.com port 22: Operation timed out
いやこれ、駆け出しがハマるレベルのトラブルやん・・・って思いながら調査しました。
調査
初歩的な調査
検索してもpemを見直せ、Security groupsのInbound rulesを見直せ、という記事ばかりだったので、一通り確認しましたがここで問題になっているとは思えず。
pemは新しいものを作ったし、Security groupsはデフォルトでSSHが全IPv4アドレスからアクセスできるようになってます。
どっかにログ出ないの?
まず疎通できてるのか確認したかったのでログがどっかに出ないかを調べました。
「EC2 ssh ログ」とか検索してもCloudWatchの話しか出ませんでした。
GUIをポチポチして、Actions > Monitor and troubleshoot > Get system logという項目があることを発見。
見てみましたが、特にそれっぽいものは出力されておらず・・・。
というかSSHレベルのログはここに出ないような気がしたので、一旦この方針は諦めました(この点、どなたか教えて下さるとありがたいです)。
pingは?
pemの問題かを切り分けたかったので、pingを打ちたかった。
ただ、よく考えたらpingのportを開いているわけではないのでping打っても応答するはずがなかった。
$ ping ec2-sample.compute-1.amazonaws.com
PING ec2-sample.compute-1.amazonaws.com (257.257.257.257): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
多分Security groupsのInbound rulesとか見直せば出来なくもなさそうですが、逆に切り分けが面倒になりそうなのでやめました。
公式ドキュメント発見
期待は薄いと思いながら公式ドキュメントをみたら、意外と色々書いてありました。
Amazon VPC 内のインスタンスへの接続に関するトラブルシューティング
Route Tables、Internet Gatewaysを見直せ、とありなるほどと思いました。
デフォルトのVPCを使っていたのですが、知識がない時期から使っていたものなので何か弄ってしまっている可能性はあるなと思いました。
デフォルトVPCを作り直す
ただ、Route Tables、Internet Gatewaysの設定よくわからん・・・と面倒になり、デフォルトのVPCを作り直すことにしました。
昔はデフォルトのVPCを消したらサポートに連絡しないと作り直せなかったそうですが、今は普通に作り直しができます(便利)。
デフォルト VPC とデフォルトサブネット - Amazon Virtual Private Cloud
そうしてもう一度EC2インスタンスを立ち上げてSSHしたら無事繋がりました。WIN。
結論
VPCも見直してみてください。
Discussion