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