スキップしてコンテンツを表示

Elastic IPを関連付けたEC2インスタンスにSSH接続できなくなりました(構成は全て確認済)

0

AWS EC2インスタンスにElastic IPを関連付けて、TeraTermからSSH接続を試みていますが、「接続がタイムアウトしました」と表示され、接続できません。

以下の構成・確認事項はすべて済んでいます:

  • インスタンスは「running」状態
  • Elastic IP(固定)をインスタンスのプライベートIPに関連付け済み
  • セキュリティグループに TCP 22 / 0.0.0.0/0 を許可済み
  • VPCのルートテーブルに 0.0.0.0/0 → インターネットゲートウェイ のルートあり
  • サブネットはパブリック(IGW付きルートテーブルに紐づけ済み)
  • TeraTermの設定:IP一致、ポート22、SSH2、正しい.pemファイルを使用
  • OSはAmazon Linux、ユーザー名は ec2-user
  • EC2 Instance Connectでも接続不可(ただし過去に成功例あり)
  • Elastic IPの再割り当て・再関連付け、新規インスタンスでの検証も試行済み

なお、接続できなくなったタイミングは**「EC2インスタンスの停止・再起動後」**です。 過去に同様の状態を何度も経験しております。

停止・再起動によって起こることは以下の通り理解しています:

  • 停止(Stop)では、動的パブリックIPは消失するが、Elastic IPは維持される
  • 再起動(Reboot)では、Elastic IPは維持されるが、OS側のsshdが未起動の可能性がある
  • いずれも、構成が正しくても接続できなくなるケースがあると認識しています

それでも接続できないため、AWS側のネットワークルーティングやElastic IPの挙動に何らかの不整合が生じている可能性もあるのではと考えています。

同様の事例や、追加で確認すべきポイントがあればご教示いただけますと幸いです。

2回答
0

EC2インスタンスにElastic IPを関連付けた後にSSH接続できなくなる問題について、いくつかの可能性と確認ポイントをご案内します。

まず、Elastic IPを関連付けた後に接続できなくなる一般的な原因として以下が考えられます:

  1. アプリケーション設定の問題:
  • インスタンス内のアプリケーションやサービスがIPアドレスを特定のアドレスにハードコードしている場合があります。
  • 特にElastic IPを割り当てる前に開いていた接続がある場合、その接続が古いIPアドレスを参照し続けている可能性があります。古い接続をすべて閉じてから再試行してください。
  1. SSHサービスの状態:
  • インスタンス停止・再起動後にSSHサービス(sshd)が正常に起動していない可能性があります。
  • EC2インスタンスのシステムログを確認して、SSHサービスの起動状態やエラーメッセージを確認することが有効です。
  1. ファイアウォール設定:
  • インスタンス内のOSレベルのファイアウォール(iptablesなど)が新しいIPアドレスからの接続を拒否している可能性があります。
  1. メモリ不足の問題:
  • 特にSSH接続に関連して、OOM(Out of Memory)の問題が発生している可能性があります。システムログでメモリ関連のエラーを確認してください。
  1. ホストキーの問題:
  • インスタンスの停止・再起動によってホストキーが変更された場合、SSH接続が拒否されることがあります。ローカルのknown_hostsファイルから古いエントリを削除してみてください。

追加の確認ポイント:

  • インスタンスのステータスチェックが両方とも合格しているか確認してください
  • NACLの設定も確認し、インバウンド/アウトバウンドの両方でSSH接続に必要なポートが許可されているか確認してください
  • 可能であれば、EC2シリアルコンソールを使用してインスタンスに接続し、SSHサービスの状態を確認してください

最後に、Elastic IPを最初に割り当ててからインスタンスの設定を行うことで、このような問題を回避できる場合があります。既存の接続を閉じてから新しい接続を試みることも効果的です。
Sources
No longer have http access to EC2 instance after elastic IP associated | AWS re:Post
Can't connect to Linux instance even after the health status checks pass | AWS re:Post
Cannot reach EC2 instance with elastic ip address | AWS re:Post

回答済み 2ヶ月前
エキスパート
レビュー済み 2ヶ月前
0

Session Managerから接続してsshdプロセスのステータスとログを確認してみてはいかがでしょうか?
Amazon LinuxであればSSM Agentがインストールされている可能性があるので、適切なIAMポリシー (AmazonSSMManagedInstanceCore) を設定したIAMロールをEC2に紐づければ接続できる可能性があります。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager.html

また、マネジメントコンソールからEC2のシステムログを確認することも可能なので何か異常がないか確認してみてください。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/troubleshoot-unreachable-instance.html#instance-console-console-output

エキスパート
回答済み 2ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

関連するコンテンツ