SSH を使用して EC2 インスタンスに接続しようとすると、エラーが発生します。AWSSupport-TroubleshootSSH Automation ワークフローを使用して、SSH 接続の問題をトラブルシューティングする方法を教えてください。
最終更新日: 2020 年 3 月 19 日
詳細なメッセージのある SSH を介して Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにログインすると、「Permission denied」または「Connection refused」などのエラーが表示されます。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 をコピーします。Automation ドキュメントを実行するには、インスタンス ID が必要です。
- (オプション) 到達不可能な Amazon EC2 インスタンスと同じアベイラビリティーゾーンのサブネットの ID をコピーします。EC2Rescue インスタンスはこのサブネットにインストールされます。サブネットを指定しない場合、Automation ドキュメントが AWS アカウントに新しい一時的な VPC を作成します。AWS アカウントに少なくとも 1 つの利用可能な VPC があることを確認します。デフォルトでは、1 つのリージョンに 5 つの VPC を作成できます。リージョンで既に 5 つの VPC を作成している場合、Amazon EC2 インスタンスを変更しないと Automation が失敗します。詳細については、「VPC とサブネット」をご参照ください。
- (オプション) オートメーション用の AWS Identity and Access Management (IAM) ロールを作成し指定します。このロールを指定しない場合、AWS Systems Manager Automation はこのドキュメントを実行するユーザーのアクセス許可を使用します。オートメーション用のロール作成の詳細については、「IAM サービスロールを使用して、Automation ワークフローを実行する」をご参照ください。
AWS Systems Manager コンソールから AWSSupport-TroubleshootSSH オートメーションを実行する
- AWS Systems Manager コンソールを開きます。
- ナビゲーションペインで [Automation] を選択します。
注: AWS Systems Manager ホームページが最初に開く場合は、メニューアイコンを選択してナビゲーションペインを開き、[Automation] をクリックします。 - [Execute automation] をクリックします。
- 検索フィールドに AWSSupport-TroubleshootSSH と入力し、 [Enter] キーを押します。
- 検索結果で [AWSSupport-TroubleshootSSH] を選択します。
- ドキュメントリストで、[AWSSupport-TroubleshootSSH] を選択します。ドキュメントの所有者は Amazon です。
- Description セクションで、[Document version] が [Default version at runtime] に設定されていることを確認します。
- [Next] をクリックします。
- Execute automation document セクションで [Simple execution] をクリックします。
- Input パラメータセクションで、以下のパラメータを指定します。
[InstanceID] で 到達不可能なインスタンスの ID を指定します。[Action] で [FixAll] を選択します。
[AllowOffline] で [True] をクリックします。
(オプション) [SubnetId] で、指定した Amazon EC2 インスタンスと同じアベイラビリティーゾーンの既存の VPC のサブネットを指定します。デフォルトでは、Systems Manager は新しい VPC を作成しますが、既存の VPC でサブネットを指定できます。
(オプション) [S3BucketName] に書き込みアクセス許可があるバケットの名前を入力します。トラブルシューティングログがある場合には、このバケットにアップロードされます。
(オプション) [AutomationAssumeRole] で、この実行の IAM ロールを指定します。ロールが指定されていない場合、AWS Systems Manager Automation はこのドキュメントを実行するユーザーのアクセス許可を使用します。 - [Execute] をクリックします。
- 実行の進行状況をモニタリングするには、実行中の Automation を選択し、[Steps] タブをクリックします。実行が完了したら、[Descriptions] タブを選択し、[View output] をクリックして結果を表示します。個々のステップの出力を表示するには、[Steps] タブを選択し、ステップの横にある [View Outputs] をクリックします。
AWS Command Line Interface (AWS CLI) から AWSSupport-TroubleshootSSH の Automation を実行する
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 Automation の詳細については、「Smart RDP and SSH remediation with AWS Systems Manager Automation API actions」をご参照ください。