はじめに
Amazon EC2 インスタンスへの接続手段として、AWS Systems Manager(SSM)のセッションマネージャーを利用されている方は多いのではないでしょうか。
SSH や RDP のポートを開放する必要がなく、踏み台サーバも不要で、セキュアかつ手軽に接続できる点が大きな魅力です。
一方で、「接続できない」「設定は問題なさそうなのにエラーになる」といった、セッションマネージャーに関する接続トラブルのご相談も少なくありません。
本記事では、セッションマネージャーで接続エラーが発生した際にまず確認すべき基本的なチェックポイントと、一見すべて正常に見えるにもかかわらず接続できない場合の代表的な原因と対処方法について、実際のサポート事例をもとに分かりやすく解説します。
トラブルシューティングの初動対応として、ぜひ参考にしてください。
発生した事象
Windows ServerのEC2インスタンス構築後、セッションマネージャーで接続しようとしたところ、以下のエラーが表示され接続できないというご相談を受けました。
「SSM エージェントはオンラインではありません」
「SSM エージェントは Systems Manager エンドポイントに接続して自身をサービスに登録できませんでした。」
まずは基本のトラブルシューティング:自動診断
接続トラブルの原因は、IAM 設定、SSM エージェントの状態、ネットワーク設定など多岐にわたります。
手動で一つ一つ確認するのもいいのですが、こういったケースではAWSが提供している自動診断ツール 「AWSSupport-TroubleshootManagedInstanceランブック」がおすすめです!
該当のインスタンスを対象に実行すると、IAMロールの権限不足や、VPCエンドポイント・インターネットゲートウェイへの到達性などを自動でチェックしてくれます。
実施した結果、IAMロールの設定漏れがわかりました。

セッションマネージャーを利用する場合、EC2 にアタッチされている IAM ロールには、SSMとの通信に必要な権限が付与されている必要があります。
接続できない場合の原因として、特によくあるのがこのIAM ロールの設定漏れです。
対処方法として、対象のIAM ロールに「AmazonSSMManagedInstanceCore」管理ポリシーが含まれているかを確認してください。

無事IAMロールを設定したので、もうセッションマネージャーに接続できるはず。

と思いましたが、接続ができませんでした…!
【Tips】IAM設定を自動化する便利な機能 「Default Host Management Configuration」を有効化しておくと、手動でIAMロールを設定しなくても、SSMに必要な権限が自動的に適用されます。管理を楽にしたい方におすすめです。 参考:Default Host Management Configuration を使用した EC2 インスタンスの自動管理
原因:OS内部での固定IP設定だった
診断ツールでのチェックとIAMの修正により、「AWS側(IAM、セキュリティグループ、ルーティングなど)の設定には問題がない」 という切り分けはできました。
そこで原因として新たに浮上したのが、OS 内部の設定です。
事象発生時の詳細な状況を改めて整理したところ、OS 内部のネットワーク設定において固定 IP が設定されていたことが判明しました。
今回の事象は、「OS 側での IP 設定変更により RDP が接続できなくなったため、代替手段として SSM を試したが、それも繋がらなかった」という経緯だったのです。
EC2の通信はENIに割り当てられたIPを前提としているため、OS側はDHCP設定のまま運用するのが基本です。
OS 側で IP アドレスを固定してしまうと、ENI の設定と不整合が発生し、通信断や接続不可の原因になります。
このため、AWS 環境では OS 側は DHCP のまま運用することが推奨されます。
要するに今回のトラブルは、「① IAM ロールの設定漏れ」 と 「② OS 内部での IP 固定設定」 という2つの要因が重なっていたケースでした。
誤解しやすいポイント
「RDP 接続ができなくても、AWS コンソールの機能であるセッションマネージャーなら接続できるはず」と考えてしまいがちですが、これは誤解です。
SSM エージェントも OS 上で動作するアプリケーションであり、OS のネットワーク機能を利用して AWS のエンドポイントに対し、「自分はここにいます」という通信を継続的に行っています。
そのため、OS 側のネットワーク設定に問題がある場合、RDP だけでなく、セッションマネージャーによる接続も同様に失敗します。
復旧手順
RDPもセッションマネージャーも繋がらない完全な締め出し状態になった場合、一時的にElastic Network Interfaceを作成することで解決できます!
正常な設定を持つ新しいネットワークインターフェース (ENI) を一時的に追加して、そこから接続を試みるという方法です。
無事この方法で、RDPもセッションマネージャーも接続可能になりました!
※アダプタの設定を修正後は、ENIをデタッチして削除するのをお忘れずに!
まとめ
- まずは AWSSupport-TroubleshootManagedInstance で自動診断を行う
- 「OS内部でのIP固定」は厳禁。 AWSでは必ずOS側はDHCP、IP固定はAWSコンソール側(プライベートIP設定)で行う
- SSMは万能ではない。 OSのネットワーク設定が誤っていると、SSMエージェントも利用できなくなる
「RDPが繋がらないからSSMで…」と考えた時に、SSMも繋がらない場合は、OSレベルでのネットワーク不全を疑ってみてください。
※本記事は実際のサポート事例をベースに構成していますが、プライバシー保護のため、画像は全て検証環境で再現したものに置き換えています。