EC2 Connect を使用して EC2 インスタンスに接続する際の問題をトラブルシューティングする方法を教えてください。

所要時間2分
0

Amazon Elastic Compute Cloud (Amazon EC2) Instance Connect を使用して EC2 Linux インスタンスに接続する際の問題をトラブルシューティングをしたいです。

簡単な説明

EC2 Instance Connect を使用してインスタンスに接続したときにエラーが表示される一般的な理由は次のとおりです。

  • EC2 Instance Connect がオペレーティングシステム (OS) のディストリビューションをサポートしていない。
  • EC2 Instance Connect パッケージがインスタンスにインストールされていない。
  • AWS Identity and Access Management (IAM) のポリシーまたは権限が欠落しているか、正しくない。
  • インスタンスに関連付けられているセキュリティグループに、EC2 Instance Connect サービスの IP アドレスが表示されていない。
  • ネットワークアクセスまたは設定が誤っている。

AWS Systems Manager オートメーションランブック AWSSupport-TroubleshootEC2InstanceConnect を使用すると、接続エラーの原因を特定できます。自動化ワークフローの詳細については、「AWS Support Automation Workflows (SAW)」と「オートメーションを設定する」を参照してください。

EC2 インスタンスを手動でトラブルシューティングすることもできます。

解決策

前提条件: インスタンスにパブリック IP アドレスがない場合は、仮想プライベートクラウド (VPC) へのプライベートネットワーク接続を確立する必要があります。VPC へのプライベートネットワーク接続を確立するには、AWS Direct Connect、AWS Site-to-Site VPN、VPC ピアリングのいずれかを使用します。インスタンスにパブリック IPv4 アドレスがなく、VPC にプライベートネットワーク接続設定がない場合は、EC2 Instance Connect Endpoint を使用してください。

注: Linux インスタンスで EC2 シリアルコンソールを有効にした場合は、シリアルコンソールを使用して Nitro ベースのインスタンスタイプをトラブルシューティングします。インスタンスにアクセスできず、シリアルコンソールへのアクセスを設定していない場合は、「EC2 シリアルコンソールへのアクセスを設定する」を参照してください。

ランブックを使用して EC2 インスタンスをトラブルシューティングする

AWSSupport-TroubleshootEC2InstanceConnect ランブックを開始する前に、IAM ユーザーまたはロールに必要なアクセス許可があることを確認してください。詳細については、AWSSupport-TroubleshootEC2InstanceConnect の「必要な IAM アクセス許可」セクションを参照してください。

ランブックを実行するには、次の手順を実行します。

  1. Systems Manager コンソールを開きます。
  2. ナビゲーションペインで、[共有リソース][ドキュメント] の順に選択します。
  3. [オートメーションドキュメント] を選択します。
  4. 検索フィールドに AWSSupport-TroubleshootEC2InstanceConnect と入力し、ドキュメントを選択します。
  5. [オートメーションの実行] を選択します。
  6. 入力パラメータに次の値を入力します。
    InstanceId に、接続できないインスタンスの ID を入力します。
    (オプション) AutomationAssumeRole には、システムマネージャーオートメーションがユーザーに代わってアクションを実行できるようにする IAM ロールの ARN を入力します。ロールが指定されていない場合、Systems Manager Automation ではこのランブックを実行するユーザーのアクセス許可を使用します。
    [ユーザー名] に、インスタンスへの接続に使用するユーザー名を入力します。このパラメータは、IAM アクセスがユーザーに許可されているかどうかを判断します。
    EC2InstanceConnectRoleOrUser に、EC2 Instance Connect がインスタンスにキーをプッシュするために使用する IAM ID の ARN を入力します。
    (オプション) SSHPort に、インスタンスで設定されている SSH ポートを入力します。デフォルト値は 22 で、ポート番号は 1 ~ 65535 の範囲である必要があります。
    (オプション) SourceNetworkType には、インスタンスへの接続に使用するネットワークタイプを入力します。
    (オプション) SourceIpCIDR に、EC2 Instance Connect への接続に使用するデバイスの IP アドレスを含む、Classless Inter-Domain Routing (CIDR) 範囲を入力します。このフィールドが空の場合、ランブックはインスタンスのセキュリティグループとネットワークアクセスコントロールリスト (ACL) ルールが SSH トラフィックを許可しているかどうかを判断できません。
  7. [実行] を選択します。
  8. [出力] セクションで詳細な結果を確認できます。

EC2 インスタンスを手動でトラブルシューティングする

EC2 インスタンスに接続する際の問題をトラブルシューティングするには、以下の設定を確認してください。

ブラウザベースの SSH 接続を使用する

ブラウザベースの SSH 接続では、インスタンスのセキュリティグループのインバウンドルールで EC2 Instance Connect が TCP ポート 22 の SSH にアクセスすることを許可する必要があります。

EC2 Instance Connect は、インスタンスへのブラウザベースの SSH 接続に特定の IP アドレス範囲を使用します。AWS IP アドレス範囲は、AWS リージョンによって異なります。特定のリージョンの EC2 Instance Connect の IP アドレス範囲を特定するには、次のコマンドを実行します。

注: 次のコマンドで、us-east-1 をお使いのインスタンスのリージョンに置き換えます。インスタンスが EC2 Instance Connect でサポートされているリージョンにあることを確認してください。

Windows

Windows PowerShell で次のコマンドを実行します。

PS C:\> Get-AWSPublicIpAddressRange -Region us-east-1 -ServiceKey EC2_INSTANCE_CONNECT | select IpPrefix

Linux

curl と jq を使用して次のコマンドを実行します。

$ curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="us-east-1") | select(.service=="EC2_INSTANCE_CONNECT") | .ip_prefix'

セキュリティグループのインバウンドルールを更新して、上記のコマンドで返された IP アドレス範囲から TCP ポート 22 にアクセスできるようにします。

EC2 Instance Connect CLI 接続を使用する

セキュリティグループのインバウンドルールを更新して、IP アドレスから TCP ポート 22 にアクセスできるようにします。

関連情報

Systems Manager Automation を使用して自動操作を実行する

EC2 Instance Connect を使用して Linux インスタンスに接続する

最初のインスタンスの起動後に SSH キーペアを紛失した場合に、Amazon EC2 インスタンスに接続する方法を教えてください

SSH を使用して Amazon EC2 Linux インスタンスへの接続をトラブルシューティングする方法を教えてください

AWS公式
AWS公式更新しました 6ヶ月前
コメントはありません

関連するコンテンツ