🎭

EC2 Instance Connectで接続できない場合の対処法

に公開

背景

AWSマネジメントコンソール(以下、マネコン)からEC2 Instance Connectを使ってEC2インスタンスに接続しようとしたところ、以下のエラーが発生しました。

Failed to connect to your instance
EC2 Instance Connect is unable to connect to your instance. Ensure your instance network settings are configured correctly for EC2 Instance Connect. For more information, see EC2 Instance Connect Prerequisites at https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-prerequisites.html.

ターミナルからのSSH接続は成功していたため、ネットワーク設定の問題ではないと判断しました。この記事は、EC2 Instance Connectで接続できなかった原因と対処法の記録です。

EC2 Instance Connectとは

EC2 Instance Connectは、AWSマネジメントコンソールやAWS CLIから、ブラウザベースでEC2インスタンスに接続できるサービスです。

主な特徴

  • キーペアの管理不要: SSH秘密鍵をローカルに保存する必要がない
  • 一時的な認証: 接続のたびに一時的なSSHキーを生成
  • CloudTrailでログ記録: 接続履歴が自動的に記録される
  • ブラウザベース: ターミナルソフト不要で接続可能

デフォルトでサポートされるAMI

以下のAMIには、EC2 Instance Connectがプリインストールされています。

  • Amazon Linux 2 2.0.20190618以降
  • Ubuntu 20.04以降

それ以外のAMI(古いAmazon Linux 2、Amazon Linux、RHELなど)では手動インストールが必要です。

原因

今回接続しようとしたEC2インスタンス(Amazon Linux 2)に、EC2 Instance Connectがインストールされていないことが原因でした。

古いAMIから起動したインスタンスや、手動でOSをアップデートしていないインスタンスでこの問題が発生します。

前提条件

EC2 Instance Connectを使用するには、以下の条件を満たす必要があります。

1. セキュリティグループの設定

EC2インスタンスのセキュリティグループで、以下のIPレンジからのSSH(ポート22)接続を許可します。

リージョン IPレンジ
ap-northeast-1(東京) 3.112.23.0/29
us-east-1(バージニア北部) 18.206.107.24/29

詳細はAWSドキュメントで確認できます。

2. SSHアクセス可能な状態

ターミナルからのSSH接続が成功していることを確認します。

ssh -i your-key.pem ec2-user@your-instance-ip

対処方法

1. EC2インスタンスにSSH接続

ターミナルからSSH接続します。

ssh -i your-key.pem ec2-user@your-instance-ip

2. EC2 Instance Connectをインストール

Amazon Linux 2の場合:

sudo yum install ec2-instance-connect -y

3. インストール確認

インストールが成功したか確認します。

rpm -qa | grep ec2-instance-connect  # Amazon Linux 2

4. マネジメントコンソールから接続確認

  1. AWSマネジメントコンソールのEC2ダッシュボードを開く
  2. 対象のインスタンスを選択
  3. 「接続」ボタンをクリック
  4. 「EC2 Instance Connect」タブを選択
  5. 「接続」ボタンをクリック

接続に成功すると、ブラウザ上でターミナル画面が表示されます。

トラブルシューティング

それでも接続できない場合

以下を確認してください。

  1. セキュリティグループの設定

    • EC2 Instance Connect用のIPレンジが許可されているか
  2. EC2 Instance Connectエンドポイント

    • VPC内にプライベートサブネットがある場合、EC2 Instance Connectエンドポイントの設定が必要
  3. IAM権限

    • ec2-instance-connect:SendSSHPublicKey権限があるか確認

参考リンク

GitHubで編集を提案

Discussion