SSH を使用して EC2 インスタンスに接続しようとするとエラーが発生しますAWSSupport-TroubleshootSSH 自動化ワークフローを使用して SSH 接続に関する問題をトラブルシューティングする方法

所要時間2分
0

詳細メッセージをオンにした状態で SSH 経由で Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにログインすると、「アクセス許可が拒否されました」や「接続が拒否されました」などのエラーが表示されます。 AWSSupport-TroubleshootSSH オートメーションドキュメントを使用して SSH 接続に関する問題をトラブルシューティングする方法

簡単な説明

AWSSupport-TroubleshootSSH は Amazon EC2Rescue ツールをインストールします。次に、SSH 経由で Linux マシンに接続する際のリモート接続エラーの原因となるいくつかの問題をチェックして修正します。AWSSupport-TroubleshootSSH オートメーションを実行すると、サブネット、S3 バケット、または IAM ロールごとに問題を自動的に修復できます。

Linux 用 EC2Rescue を使用するためのシステム要件

Linux 用 EC2Rescue には、以下の前提条件を満たす Amazon EC2 Linux インスタンスが必要です。

サポート対象のオペレーティングシステム

  • Amazon Linux 2
  • Amazon Linux 2016.09 以上
  • SLES 12 以上
  • RHEL 7 以上
  • Ubuntu 16.04 以上

ソフトウェア要件

  • Python 2.7.9 以上または 3.2 以上

注: 詳細なメッセージや他の種類のエラーメッセージのトラブルシューティングの詳細については、「SSH を使用して Amazon EC2 Linux インスタンスに接続できないのはなぜですか?」を参照してください。

解決方法

始める前に、次の作業を行ってください。

  • トラブルシューティングする Amazon EC2 インスタンスのインスタンス ID をコピーします。オートメーションドキュメントを実行するには、インスタンス ID が必要です。
  • (オプション) アクセスできない Amazon EC2 インスタンスと同じアベイラビリティーゾーンにあるサブネットの ID をコピーします。EC2Rescue インスタンスはこのサブネットにインストールされます。サブネットを指定しない場合、オートメーションドキュメントは AWS アカウントに新しい一時的な VPC を作成します。AWS アカウントに使用可能な VPC が少なくとも 1 つあることを確認します。デフォルトでは、1 つのリージョンに 5 つの VPC を作成できます。リージョンに既に 5 つの VPC を作成している場合、Amazon EC2 インスタンスを変更しないと自動化は失敗します。詳細については、「VPC とサブネット」を参照してください。
  • (オプション) オートメーション用の AWS Identity and Access Management (IAM) ロールを作成して指定します。このロールを指定しない場合、AWS Systems Manager Automation はこのドキュメントを実行するユーザーの権限を使用します。オートメーション用のロール作成の詳細については、「IAM を使用して、オートメーションのロールを設定する」を参照してください。

AWS Systems Manager コンソールから AWSSupport-TroubleshootSSH オートメーションを実行します。

  1. AWS Systems Manager コンソールを開きます。
  2. ナビゲーションペインで、[オートメーション] を選択します。
    注: AWS Systems Manager のホームページが最初に開いた場合は、メニューアイコンを選択してナビゲーションペインを開き、次に [オートメーション] を選択します。
  3. [オートメーションの実行] を選択します。
  4. 検索フィールドに「AWSSupport-TroubleshootSSH」と入力し、Enter キーを押します。
  5. 検索結果で「AWSSupport-TroubleshootSSH」を選択します。
  6. ドキュメントリストで、「AWSSupport-TroubleshootSSH」を選択します。ドキュメントの所有者は Amazon です。
  7. [説明] セクションで、[ドキュメントのバージョン][ランタイムのデフォルトバージョン] に設定されていることを確認します。
  8. [次へ] を選択します。
  9. [オートメーションドキュメントの実行] セクションで、[シンプルな実行] を選択します。
  10. [入力パラメータ] セクションで、次のパラメータを指定します。
    [InstanceID] には、アクセスできないインスタンスの ID を指定します。[Action] で、[FixAll] を選択します。
    [AllowOffline][True] を選択します。
    注: このパラメータが False に設定されていて、インスタンスが Systems Manager によって管理されていない場合、オートメーションは失敗します。
    (オプション) [SubnetId] に、指定した Amazon EC2 インスタンスと同じアベイラビリティーゾーンにある既存の VPC のサブネットを指定します。デフォルトでは、Systems Manager は新しい VPC を作成しますが、既存の VPC にサブネットを指定できます。
    (オプション) [S3BucketName] に、書き込み権限のあるバケットの名前を入力します。トラブルシューティングログがある場合は、このバケットにアップロードされます。
    (オプション) [AutomationAssumeRole] に、この実行に使用する IAM ロールを指定します。ロールを指定しない場合、AWS Systems Manager Automation はこのドキュメントを実行するユーザーの権限を使用します。
  11. [実行] を選択します。
  12. 実行の進行状況を監視するには、実行中のオートメーションを選択してから [ステップ] タブを選択します。実行が終了したら、[説明] タブを選択し、[出力を表示] を選択して結果を表示します。個々のステップの出力を表示するには、[ステップ] タブを選択し、ステップの横にある [出力を表示] を選択します。

AWS コマンドラインインターフェイス (AWS CLI) から AWSSupport-TroubleshootSSH オートメーションを実行する

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootSSH" --document-version "\$DEFAULT" --parameters '{"InstanceId":["i-0a241ed9caf16f01e"],"Action":["FixAll"],"AllowOffline":["True"],"SubnetId":["SelectedInstanceSubnet"]}' --region us-east-1

AWSSupport-TroubleshootSSH オートメーションの詳細については、「AWS Systems Manager Automation の API アクションを使用したスマート RDP と SSH の修復」を参照してください。