AWS初学者ですが、ターミナル上でSSH接続しようとしたら下記のエラーが出て苦しめられたので、ここに対策を書いていきます。
同じエラーが出ている方がいたら参考になればと思います。
↓ちなみにAWS学習はこのサイトを見ながら進めていました。その途中で起きたエラーです。
https://zenn.dev/naoki_mochizuki/books/1471ce20222227
cd ~/.ssh
$ ssh -i "*****.pem" ec2-user@**.**.**.**
ssh: connect to host ec2-**-**-**-**.ap-northeast-1.compute.amazonaws.com port 22: Operation timed out
※*はただの伏字なので気にしないでください
色々なサイトの対策記事を見てみましたが、どれもエラーの原因と解決法がバラバラでどれを参考にすればいいかわからなかったので、公式ドキュメントをチェックしました。
あまり期待してなかったのですが、AWSの公式ドキュメントはエラーが起きたときの原因と対処法が細かく書いてあってわかりやすかったので参考にしました。
このページに書いてある解決方法の上から順にこなしていくことにしました。
①セキュリティ設定で適切なアクセスが許可されていることを確認する
・SSH を使用して IP アドレスからインスタンスへのアクセスを許可するようにセキュリティグループにルールを追加します。
→タイプSSH プロトコルTCP ポート範囲は22 ソースはマイIPで問題なさそう。
・インスタンスがシステムおよびインスタンスのステータスチェックにパスしていることを確認します。
→パスしていることを確認済み
②ネットワーク ACL でインスタンスへのアクセスが許可されていることを確認する
・インバウンド、アウトバウンド共にルールがデフォルトのネットワーク ACL 設定と異なっているかどうかを確認します。
→デフォルトのままだったので問題なし
③VPC ルートテーブルがインターネットとの間のトラフィックを許可していることを確認する ←原因これでした!
インターネットゲートウェイをポイントするデフォルトルート (送信先が 0.0.0.0/0 であるルート) があることを確認してください
プロジェクト*******ap-northeast-1に送信先(0.0.0.0/0)がない!
「[Destination] (送信先) が 0.0.0.0/0 で、インターネットゲートウェイ ID を [Target] (ターゲット) に持つ新しいルートを追加します。」
の通りに実行したら無事解決しました!!
あとがき
port 22: Operation timed outエラーはいろんな原因が考えられるので、検索しても自分のエラー原因と合致している記事がなかなかでてこなかったりします。
公式ドキュメントを見るのが一番ですね!
参考: