スキップしてコンテンツを表示

RDP を使用して EC2 Windows インスタンスに接続する際、認証エラーが発生する場合のトラブルシューティング方法を教えてください。

所要時間3分
0

リモートデスクトッププロトコル (RDP) を使用して Amazon Elastic Compute Cloud (Amazon EC2) Windows インスタンスにログインを試行すると、認証エラーが発生します。

簡単な説明

RDP を使用して Amazon EC2 Windows インスタンスにログインする際、次の認証エラーが発生する場合があります。

「An authentication error has occurred.The Local Security Authority cannot be contacted.」

「The remote computer that you are trying to connect to requires Network Level Authentication (NLA), but your Windows domain controller cannot be contacted to perform NLA.If you are an administrator on the remote computer, you can disable NLA by using the options on the Remote tab of the System Properties dialog box.」

このエラーは、次のシナリオで発生する可能性があります。

  • ネットワーク層認証 (NLA) がサーバーで有効になっています。
  • RDP がログインする際、ドメインとこのドメインに参加している EC2 インスタンスとの間の信頼関係を確立できない。

AWSSupport-TroubleshootRDP ランブックを使用することも、エラーを手動でトラブルシューティングすることもできます。

解決策

サーバーで NLA が有効になっている

NLA エラーは、ドメイン認証情報が認証されていないことが原因で、インスタンスがドメインコントローラーへの接続を失った場合に発生します。この問題を修正するには、次のいずれかの方法で到達できないインスタンスの NLA を無効にします。

  • AWS Systems Manager の AWSSupport-TroubleshootRDP オートメーションを実行し、インスタンス設定を変更します。
  • Systems Manager Session Manager または aws:runPowerShellscript コマンドを使用します。
  • レジストリをオフラインで手動変更します。

注: NLA を変更する際は、レジストリを変更する必要があります。開始する前に、インスタンスから Amazon マシンイメージ (AMI) を作成します。この手順により、レジストリを変更する前にバックアップが作成されます。

AWSSupport-TroubleshootRDP オートメーションを実行する

前提条件:

  • RDP 設定、RDP サービス、および Windows ファイアウォールのプロファイルに行われた変更を確認します。
  • ターゲット EC2 インスタンスには、Amazon マネージドポリシー AmazonSSMManagedInstanceCore がアタッチされた AWS Identity and Access Management (IAM) インスタンスプロファイルロールが存在することを確認します。
  • 現在の IAM ユーザーまたはロールに必須権限が付与されていることを確認します。詳細については、AWSSupport-TroubleshootRDP の「必要な IAM 権限」セクションを参照してください。
    : AllowOffline オプションを選択した場合、このランブックは AWSSupport-ExecuteEC2Rescue ランブックを呼び出し、オフラインで修正を行います。ランブックを開始するには、IAM マネージドポリシー AmazonSSMAutomationRole がアタッチされている必要があります。詳細については、AWSSupport-StartEC2RescueWorkflow を参照してください。

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

  1. Systems Manager コンソールを開きます。
  2. ナビゲーションペインで [ドキュメント] を選択します。
  3. 検索バーに AWSSupport-TroubleshootRDP を入力します。
  4. AWSSupport-TroubleshootRDP ドキュメントを選択します。
  5. [オートメーションの実行] を選択します。
  6. [実行] を選択します。

オートメーションの完了後、[出力] セクションで詳細結果を確認します。

Systems Manager Session Manager を使用する

重要: インスタンスには Systems Manager Agent (SSM Agent) がインストールされており、インスタンスはオンラインである必要があります。また、インスタンスには Session Manager に対する権限を付与する IAM ロールが必要です。詳細については、「Session Manager の前提条件を満たす」を参照してください。

Session Manager でレジストリキーを追加し、NLA を無効にするには、次の手順を実行します。

  1. Systems Manager コンソールを開きます。
  2. ナビゲーションペインで [Fleet Manager] を選択します。
  3. 接続するマネージドインスタンスを選択します。
  4. [ノードアクション] メニューで [ターミナルセッションの開始] を選択します。
  5. ターミナルのセッションで次のコマンドを実行します。
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 0 /freg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v fAllowSecProtocolNegotiation /t REG_DWORD /d 0 /f
    

aws:runPowerShellscript コマンドを使用する

重要: インスタンスには SSM Agent がインストールされており、インスタンスはオンラインである必要があります。また、インスタンスには Session Manager に対する権限を付与する IAM ロールが必要です。詳細については、「Session Manager の前提条件を満たす」を参照してください。

aws:runPowerShellscript コマンドドキュメントを使用してレジストリキーを追加し、NLA を無効にするには、次の手順を実行します。

  1. Systems Manager コンソールを開きます。
  2. ナビゲーションペインで [コマンドの実行] を選択し、[コマンドを実行] を選択します。
    [コマンドドキュメント]AWS-RunPowerShellScript を選択します。
    [コマンドパラメータ] に次のコマンドを入力します。
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 0 /freg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v fAllowSecProtocolNegotiation /t REG_DWORD /d 0 /f
    [ターゲット]には、[インスタンスを手動で選択] を選択し、インスタンスを選択します。
  3. [実行] を選択します。
  4. [全体のステータス]Success に変更されるまで待機します。2 分後にページを更新します。
  5. インスタンスを再起動します。
  6. RDP を使用して、インスタンスにログインします。

レジストリをオフラインで手動変更する

次の手順を実行します。

  1. 到達できないインスタンスを停止してから、ルートボリュームをデタッチします。

  2. 停止させた、到達できないインスタンスと同じアベイラビリティーゾーンで新しいインスタンスを起動します。新しいインスタンスがレスキューインスタンスになります。

    重要: ディスク署名の問題を回避するには、到達できないインスタンスとは別の Windows インスタンスを起動することをおすすめします。

  3. デタッチしたボリューム/dev/xvdf としてレスキューインスタンスにアタッチします。

  4. RDP を使用してレスキューインスタンスに接続し、先ほどアタッチしたボリュームを Disk Manager でオンラインに設定します。

  5. コマンドプロンプトに regedit.exe を入力し、Enter キーを押すとレジストリ エディターが開きます。

  6. HKEY_LOCAL_MACHINE を選択し、[ファイル] を選択してから、[ハイブの読み込み] を選択します。

  7. アタッチされたボリュームの Windows フォルダに移動し、SYSTEM ファイルを選択します。デフォルトパスは D:\Windows\System32\config です。

  8. システムファイルに名前を付けます。たとえば、badsys

  9. badsys システムファイルが HKEY_LOCAL_MACHINE の下に表示されるようになりました。badsys 内で ControlSet001ControlTerminal ServerWinStationsRDP-Tcp の順に移動します。

  10. SecurityLayer をダブルクリックし、値のデータを0 に設定します。
    UserAuthentication を選択し、値のデータを 0 に設定します。
    fAllowSecProtocolNegotiation を選択し、値のデータを 0 に設定します。

  11. badsys を選択し、[ファイル] を選択した後、[Hive をアンロード] を選択します。

  12. ハイブをアンロードした後、ディスク マネージャーを開き、ディスクをオフラインにします。

  13. レスキューインスタンスからボリュームをデタッチし、そのボリュームを到達できないインスタンスにアタッチしてルートボリューム (/dev/sda1) に設定します。

  14. インスタンスを起動し、RDP をテストします。

RDP ログイン時に信頼関係を確立できない

キャッシュされたユーザー認証情報を使用して到達できないインスタンスへのログインを試行します。

前提条件:

  • EC2 インスタンスに対して正常に認証できるローカルアカウント。
  • (オプション) インスタンスがドメインコントローラーと通信した際に、ログインしていた 1 つ以上のドメインアカウント。ドメインアカウントが機能するには、そのドメインアカウントの認証情報はサーバーにキャッシュされている必要があります。
    **注:**ローカルアカウントを使用するのがベストプラクティスです。
  • ドメインコントローラーを利用できない場合は、キャッシュする過去のログイン数が 1 以上に設定されていることを確認します。インタラクティブログインを使用するには、上記を実行する必要があります。このポリシーは、デフォルト値の 10 に設定できます。デフォルトではポリシーは定義されていませんが、サーバーのローカルポリシーを使用できます。

キャッシュされたユーザー認証情報を使用してログインするには、次の手順を実行します。

  1. Amazon EC2 コンソールを開きます。
  2. ナビゲーションペインで [セキュリティグループ] を選択します。
  3. [セキュリティグループの作成] を選択します。
  4. セキュリティグループ名と説明を追加します。
  5. [インバウンドルール][ルールの追加] を選択します。
    [タイプ][RDP] を選択します。次に、RDP で接続元として使用するソースの情報を入力します。
  6. [アウトバウンドルール] から、すべてのアウトバウンドアクセスを削除します。
  7. [セキュリティグループの作成] を選択します。
  8. ナビゲーションペインで [インスタンス] を選択し、到達できないインスタンスを選択します。
  9. [アクション] を選択し、[セキュリティ] を選択してから、[セキュリティグループの変更] を選択します。既存のセキュリティグループを削除し、作成したセキュリティグループを割り当てます。
  10. RDP を使用して EC2 インスタンスに接続するには、通常のドメインアカウントを使用します。Amazon EC2 からすべてのアウトバウンドアクセスが削除されたため、RDP はサーバーに保存されているキャッシュされた認証情報を使用します。

注: 初回の認証は、ドメインコントローラー経由で試行されます。Amazon EC2 からアウトバウンドアクセスが行われないため、結果的に、認証はサーバーに保存されているキャッシュされた認証情報を確認します。次に、キャッシュされた認証情報を使用して認証を再試行すると、ログインが成功します。ログイン後は、セキュリティグループの設定を元の状態に戻すことができます。その後、ドメインの問題修正を続行します。

その他のトラブルシューティング

それでもインスタンスに接続できない場合は、「EC2 Windows インスタンスでの、RDP 接続に関する問題のトラブルシューティング方法を教えてください」を参照してください。

関連情報

AWS Systems Manager 実行コマンド

AWS Systems Manager Session Manager を使用する

Systems Manager Automation による自動操作を実行する

オートメーションを設定する

Systems Manager Automation ランブックリファレンス

コメントはありません