Amazon EC2 Windows インスタンスへの接続に関する問題のトラブルシューティング - Amazon Elastic Compute Cloud

Amazon EC2 Windows インスタンスへの接続に関する問題のトラブルシューティング

以下の情報と一般的なエラーは、Windows インスタンスに接続するときの問題のトラブルシューティングに役立ちます。

リモートデスクトップからリモートコンピュータに接続できません

インスタンスへの接続関連の問題を解決するには、以下を実行します。

  • 正しいパブリック DNS ホスト名を使用していることを確認します (Amazon EC2 コンソールでは、インスタンスを選択し、詳細ペインの [Public DNS (IPv4) (パブリック DNS (IPv4))] を確認します)。インスタンスが VPC 内にあり、パブリック DNS 名が表示されない場合は、DNS ホスト名を有効にする必要があります。詳細については、Amazon VPC ユーザーガイドの「DNS attributes for your VPC」(VPC の DNS 属性) を参照してください。

  • インスタンスにパブリック IPv4 アドレスがあることを確認します。そうでない場合は、Elastic IP アドレスをインスタンスに関連付けることができます。詳細については、「Elastic IP アドレス」を参照してください。

  • IPv6 アドレスを使用してインスタンスに接続するには、ローカルコンピュータに IPv6 があり、IPv6 アドレスを使用するように設定されていることを確認します。詳細については、「Amazon VPC ユーザーガイド」の「インスタンスに IPv6 を設定する」を参照してください。

  • セキュリティグループに、ポート 3389 での RDP アクセスを許可するルールがあることを確認します。

  • パスワードをコピーしたがエラー Your credentials did not work が発生した場合、プロンプトが表示されたら手動で入力してください。パスワードをコピーしたときに、1 文字欠けていたり、余分な空白文字が含まれている可能性があります。

  • インスタンスのステータスチェックが成功していることを確認します。詳細については、Amazon EC2 インスタンスのステータスチェックおよびステータスチェックに失敗した Amazon EC2 Linux インスタンスをトラブルシューティングするを参照してください。

  • サブネットのルートテーブルに、VPC 外へのすべてのトラフィックを VPC のインターネットゲートウェイに送信するルートがあることを確認します。詳細については、Amazon VPC ユーザーガイド の「カスタムルートテーブルを作成する」 (インターネットゲートウェイ) を参照してください。

  • Windows ファイアウォール、または他のファイアウォールのソフトウェアによって、インスタンスへの RDP トラフィックがブロックされていないことを確認します。Windows ファイアウォールを無効にし、セキュリティグループのルールを使用してインスタンスへのアクセスを制御することをお勧めします。disable the Windows Firewall profiles using SSM AgentAWSSupport-TroubleshootRDP を使用することができます。AWS Systems Manager 用に設定されていない Windows インスタンスで Windows ファイアウォールを無効にするには、AWSSupport-ExecuteEC2Rescue を使用するか、以下の手動手順を使用します。

  1. 影響のあるインスタンスを停止し、ルートボリュームをデタッチします。

  2. 影響のあるインスタンスと同じアベイラビリティーゾーンで一時インスタンスを起動します。

    警告

    一時インスタンスが元のインスタンスと同じ AMI に基づいている場合、追加の手順を完了する必要があります。この手順を実行しない場合、ディスク署名の競合によって、ルートボリュームを復元した後、元のインスタンスを起動できなくなります。または、一時インスタンスとして別の AMI を選択します。例えば、元のインスタンスで Windows Server 2016 用の AWS Windows AMI を使用している場合、Windows Server 2019 用の AWS Windows AMI を使用して一時インスタンスを起動します。

  3. 影響のあるインスタンスから一時インスタンスにルートボリュームをアタッチします。一時インスタンスに接続し、[Disk Management] ユーティリティを開いて、ドライブをオンラインにします。

  4. [Regedit] を開き、[HKEY_LOCAL_MACHINE] を選択します。[File] メニューの [Load Hive] を選択します。ドライブを選択して、ファイル [Windows\System32\config\SYSTEM] を開き、プロンプトが表示されたらキー名を指定します (任意の名前を使用できます)。

  5. ロードしたキーを選択し、ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy に移動します。xxxxProfile というフォームの名前のキーをそれぞれ選択し、EnableFirewall の値を 1 から 0 に変更します。再度キーを選択し、[File] メニューの [Unload Hive] を選択します。

  6. (オプション) 一時インスタンスが元のインスタンスと同じ AMI に基づいている場合、以下の手順を完了する必要があります。この手順を実行しない場合、ディスク署名の競合のためルートボリュームを復元した後、元のインスタンスを起動できなくなります。

    警告

    以下の手順では、レジストリエディタを使用して Windows レジストリを編集する方法を説明します。Windows レジストリに慣れていない場合や、レジストリエディターを使用して安全に変更する方法については、「レジストリを構成する」を参照してください。

    1. コマンドプロンプトを開き、「regedit.exe」と入力して、[Enter] を押します。

    2. [レジストリエディタ] で、コンテキストメニュー (右クリック) から [HKEY_LOCAL_MACHINE] を選択し、[検索] を選択します。

    3. [Windows Boot Manager] を入力して、[次を検索] を選択します。

    4. 11000001 というキーを選択します。このキーは、前の手順で検索したキーの兄弟です。

    5. 右のペインで [Element] を選択し、コンテキストメニュー (右クリック) から[変更] を選択します。

    6. データのオフセット 0x38 で 4 バイトのディスク署名を見つけます。バイトの順序を逆にしてディスク署名を作成し、書き留めます。例えば、次のデータで表されるディスク署名は E9EB3AA5 です。

      ... 0030 00 00 00 00 01 00 00 00 0038 A5 3A EB E9 00 00 00 00 0040 00 00 00 00 00 00 00 00 ...
    7. コマンドプロンプトウィンドウで、次のコマンドを実行して Microsoft DiskPart を起動します。

      diskpart
    8. 次の DiskPart コマンドを実行して、ボリュームを選択します。(ディスク番号が 1 であることを確認するには、ディスク管理ユーティリティを使用します。)

      DISKPART> select disk 1 Disk 1 is now the selected disk.
    9. 次の DiskPart コマンドを実行して、ディスク署名を取得します。

      DISKPART> uniqueid disk Disk ID: 0C764FA8
    10. 前の手順で表示されたディスク署名が、以前に書き留めた BCD のディスク署名と一致しない場合は、次の DiskPart コマンドを使用してディスク署名を変更して一致させます。

      DISKPART> uniqueid disk id=E9EB3AA5
  7. [ディスク管理] ユーティリティを使用して、ドライブをオフラインにします。

    注記

    一時インスタンスが影響を受けるインスタンスと同じ OS を実行している場合、ドライブは自動的にオフラインになるため、手動でオフラインにする必要はありません。

  8. ボリュームを一時インスタンスからデタッチします。一時インスタンスをそれ以上使用しない場合は、終了しても構いません。

  9. /dev/sda1 としてアタッチして、影響のあるインスタンスのルートボリュームを復元します。

  10. インスタンスを起動します。

  • Active Directory ドメインの一部ではないインスタンスでネットワークレベル認証が無効になっていることを確認します (AWSSupport-TroubleshootRDP を使用して disable NLA を行います)。

  • リモートデスクトップサービス (TermService) のスタートアップタイプが自動であり、サービスが開始されていることを確認します (AWSSupport-TroubleshootRDP を使用して enable and start the RDP service を行います)。

  • 正しいリモートデスクトッププロトコルポート (デフォルトは 3389) に接続していることを確認します (AWSSupport-TroubleshootRDP を使用して read the current RDP port および change it back to 3389 を行います)。

  • インスタンスでリモートデスクトップ接続が許可されていることを確認します (AWSSupport-TroubleshootRDP を使用して enable Remote Desktop connections を行います)。

  • パスワードの有効期限が切れていないことを確認します。パスワードの有効期限が切れている場合、リセットできます。詳細については、「Amazon EC2 Windows インスタンスの Windows 管理者パスワードをリセットする」を参照してください。

  • インスタンスで作成したユーザーを使用して接続しようとすると、エラー The user cannot connect to the server due to insufficient access privileges が表示される場合、そのユーザーにローカルでログオンする権限が付与されていることを確認してください。詳細については、「メンバーにローカルでログオンする権限を付与する」を参照してください。

  • 許可されている最大の同時 RDP セッション数より多くのセッションを使用しようとすると、セッションは終了され、「Your Remote Desktop Services session has ended. Another user connected to the remote computer, so your connection was lost.」というメッセージが表示されます。デフォルトでは、インスタンスに許可される同時 RDP セッション数は 2 です。

macOS RDP クライアントの使用中にエラーが発生する

Microsoft ウェブサイトのリモートデスクトップ接続クライアントを使用して Windows Server インスタンスに接続する場合は、次のエラーが発生する可能性があります。

Remote Desktop Connection cannot verify the identity of the computer that you want to connect to.

Mac App Store から Microsoft リモートデスクトップアプリをダウンロードし、そのアプリを使用して、インスタンスに接続します。

RDP にデスクトップではなく黒い画面が表示される

この問題を解決するには、以下の手順を実行します。

  • コンソール出力に追加情報がないか、確認します。Amazon EC2 コンソールを使用してインスタンスのコンソール出力を取得するには、インスタンスを選択してから、[アクション]、[モニタリングおよびトラブルシューティング]、[システムログの取得] の順に選択します。

  • 最新バージョンの RDP クライアントを実行していることを確認します。

  • RDP クライアントのデフォルト設定を使用してください。詳細については、「Remote Session Environment」を参照してください。

  • リモートデスクトップ接続を使用している場合、次のように /admin オプションを使用して開始してみてください。

    mstsc /v:instance /admin
  • サーバーで全画面アプリケーションが実行されている場合、応答を停止する可能性があります。Ctrl+Shift+Esc キーを使用して Windows タスクマネージャーを起動し、アプリケーションを閉じます。

  • サーバーの使用率が高すぎる場合、応答を停止する可能性があります。Amazon EC2 コンソールを使用してインスタンスを監視するには、インスタンスを選択し、[Monitoring] をクリックします。サイズの大きいインスタンスタイプに変更する必要がある場合は、「Amazon EC2 インスタンスタイプの変更」を参照してください。

管理者ではないユーザーでインスタンスにリモートでログオンできない

管理者アカウントではないユーザーを使用して、Windows インスタンスにリモートでログオンできない場合、ローカルでログオンする権限がユーザーに付与されていることを確認してください。「ユーザーまたはグループにドメインのドメインコントローラーにローカルでログオンする権限を付与する」を参照してください。

AWS Systems Manager を使用したリモートデスクトップ問題のトラブルシューティング

AWS Systems Manager では、RDP を使用して Windows インスタンスに接続する際の問題のトラブルシューティングを行うことができます。

AWSSupport-TroubleshootRDP

AWSSupport-TroubleshootRDP 自動化ドキュメントでは、リモートデスクトッププロトコル (RDP) の接続に影響する可能性があるターゲットインスタンスの一般設定 (RDP ポートネットワークレイヤー認証 (NLA)Windows ファイアウォールプロファイルなど) を確認または修正できます。デフォルトでは、このドキュメントは以上の設定の値を読み取って出力します。

AWSSupport-TroubleshootRDP オートメーションドキュメントは、EC2 インスタンス、オンプレミスインスタンス、および AWS Systems Manager (マネージドインスタンス) との使用が有効になっている仮想マシン (VM) で使用できます。また、Systems Manager との使用が有効になっていない EC2 Windows Server インスタンスでも使用できます。AWS Systems Manager で使用するのインスタンスを有効にする方法については、「AWS Systems Manager ユーザーガイド」の「マネージドノード」を参照してください。

AWSSupport-TroubleshootRDP ドキュメントの使用に関するトラブルシューティングを行うには
  1. Systems Manager コンソールにログインします

  2. 障害が発生した インスタンスと同じリージョンで操作していることを確認します。

  3. 左側のナビゲーションペインから [Documents] (ドキュメント) を選択します。

  4. [Owned by Amazon] (Amazon が所有) タブで、検索フィールドに AWSSupport-TroubleshootRDP と入力します。AWSSupport-TroubleshootRDP ドキュメントが表示されたら、それを選択します。

  5. [オートメーションを実行] を選択します。

  6. [Execution Mode (実行モード)] で、[Simple execution (シンプルな実行)] を選択します。

  7. [入力パラメーター] の [InstanceId] フィールドで、[Show interactive instance picker (インタラクティブなインスタンスピッカーを表示)] を有効にします。

  8. Amazon EC2 インスタンスを選択します。

  9. を確認し、[Execute (実行)] を選択します。

  10. 実行の進行状況をモニタリングするには、[Execution status (実行ステータス)] で、ステータスが [保留中] から [成功] に変わるのを待ちます。[出力] を展開して結果を表示します。個別のステップの出力を表示するには、[Executed Steps (実行済みのステップ)] で [Step ID (ステップ ID)] から項目を選択します。

AWSSupport-TroubleshootRDP の例

以下の例では、AWSSupport-TroubleshootRDP を使用して一般的なトラブルシューティングタスクを実行する方法を示します。AWS CLI start-automation-execution コマンドの例を使用するか、提供されている AWS Management Console へのリンクを使用できます。

例: 現在の RDP のステータスを確認する

AWS CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=instance_id, Action=Custom" --region region_code

AWS Systems Manager コンソール:

https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region#documentVersion=$LATEST
例: Windows ファイアウォールを無効にする

AWS CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=instance_id, Action=Custom, Firewall=Disable" --region region_code

AWS Systems Manager コンソール:

https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion=$LATEST&Firewall=Disable
例: ネットワークレベル認証を無効にする

AWS CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=instance_id, Action=Custom, NLASettingAction=Disable" --region region_code

AWS Systems Manager コンソール:

https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion
例: RDP サービスのスタートアップタイプを [自動] に設定して RDP サービスを開始する

AWS CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=instance_id, Action=Custom, RDPServiceStartupType=Auto, RDPServiceAction=Start" --region region_code

AWS Systems Manager コンソール:

https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion=$LATEST&RDPServiceStartupType=Auto&RDPServiceAction=Start
例: デフォルトの RDP ポート (3389) を復元する

AWS CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=instance_id, Action=Custom, RDPPortAction=Modify" --region region_code

AWS Systems Manager コンソール:

https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion=$LATEST&RDPPortAction=Modify
例: リモート接続を許可する

AWS CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=instance_id, Action=Custom, RemoteConnections=Enable" --region region_code

AWS Systems Manager コンソール:

https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion=$LATEST&RemoteConnections=Enable

AWSSupport-ExecuteEC2Rescue

AWSSupport-ExecuteEC2Rescue 自動化ドキュメントでは、EC2Rescue for Windows Server を使用して EC2 インスタンスの接続と RDP の問題のトラブルシューティングと復元が自動的に行われます。詳細については、「到達不可能なインスタンスでの EC2Rescue ツールの実行」を参照してください。

AWSSupport-ExecuteEC2Rescue 自動化ドキュメントは、インスタンスの停止と再起動を必要とします。Systems Manager Automation は、インスタンスを停止して Amazon マシンイメージ (AMI) を作成します。インスタンスストアボリュームに保存されているデータは失われます。Elastic IP アドレスを使用していない場合は、パブリック IP アドレスが変わります。詳細については、「AWS Systems Manager ユーザーガイド」の「到達不可能なインスタンスでの EC2Rescue ツールの実行」を参照してください。

AWSSupport-ExecuteEC2Rescue ドキュメントの使用に関するトラブルシューティングを行うには
  1. Systems Manager コンソールを開きます。

  2. 障害が発生した Amazon EC2 インスタンスと同じリージョンで操作していることを確認します。

  3. ナビゲーションペインで、[ドキュメント] を選択します。

  4. AWSSupport-ExecuteEC2Rescue ドキュメントを検索して選択し、[自動化を実行] を選択します。

  5. [Execution Mode (実行モード)] で、[Simple execution (シンプルな実行)] を選択します。

  6. [入力パラメーター] セクションの [UnreachableInstanceId] に、到達不可能なインスタンスの Amazon EC2 インスタンス ID を入力します。

  7. (オプション) Amazon EC2 インスタンスのトラブルシューティング用にオペレーティングシステムレベルのログを収集する場合は、[LogDestination] に Amazon Simple Storage Service (Amazon S3) バケット名を入力します。ログは、指定したバケットに自動的にアップロードされます。

  8. [Execute (実行)] を選択します。

  9. 実行の進行状況をモニタリングするには、[Execution status (実行ステータス)] で、ステータスが [保留中] から [成功] に変わるのを待ちます。[出力] を展開して結果を表示します。個別のステップの出力を表示するには、[Executed Steps (実行済みのステップ)] で [Step ID (ステップ ID)] を選択します。

リモートレジストリを使用して EC2 インスタンスでリモートデスクトップを有効にする

到達不能なインスタンスが AWS Systems Manager Session Manager で管理されていない場合は、リモートレジストリを使用してリモートデスクトップを有効にできます。

  1. EC2 コンソールから、到達不能なインスタンスを停止します。

  2. 到達不能なインスタンスのルートボリュームをデタッチし、そのボリュームを、同じアベイラビリティーゾーン内の到達可能なインスタンスにストレージボリュームとしてアタッチします。到達可能なインスタンスが同じアベイラビリティーゾーンにない場合は起動します。到達不能なインスタンス上のルートボリュームのデバイス名を書き留めます。

  3. 到達可能なインスタンスで、Disk Management を開きます。これを行うには、コマンドプロンプトウィンドウで次のコマンドを実行ます。

    diskmgmt.msc
  4. 新たにアタッチされた (到達不能なインスタンスからの) ボリュームを右クリックし、[オンライン] を選択します。

  5. Windows レジストリエディタを開きます。これを行うには、コマンドプロンプトウィンドウで次のコマンドを実行ます。

    regedit
  6. レジストリエディターで、[HKEY_LOCAL_MACHINE] を選択した後、[ファイル][Hive の読み込み] の順に選択します。

  7. 接続されているボリュームのドライブを選択し、\Windows\System32\config\ に移動し、SYSTEM を選択して、[開く] を選択します。

  8. [キー名] にハイブの一意の名前を入力し、[OK] を選択します。

  9. レジストリに変更を加える前に、レジストリ Hive をバックアップします。

    1. レジストリエディターのコンソールツリーで、読み込んだハイブ (HKEY_LOCAL_MACHINE\your-key-name) を選択します。

    2. [ファイル][エクスポート] の順に選択します。

    3. [Export Registry File (レジストリファイルのエクスポート)] ダイアログボックスで、バックアップコピーを保存する場所を選択し、[File name (ファイル名)] フィールドにバックアップファイルの名前を入力します。

    4. [Save] を選択します。

  10. レジストリエディターで HKEY_LOCAL_MACHINE\your key name\ControlSet001\Control\Terminal Server に移動し、詳細ペインで [fDenyTSConnections] をダブルクリックします。

  11. [Edit DWORD (DWORD の編集)] 値ボックスで、[Value data (値のデータ)] フィールドに 0 と入力します。

  12. [OK] を選択します。

    注記

    [Value data](値のデータ) フィールドの値が 1 の場合、インスタンスはリモートデスクトップ接続を拒否します。0 の値は、リモートデスクトップ接続を許可します。

  13. レジストリエディターで [HKEY_LOCAL_MACHINE\your-key-name] を選択した後、[ファイル][ハイブのアンロード] の順に選択します。

  14. レジストリエディターと Disk Management を閉じます。

  15. EC2 コンソールから、ルートボリュームを到達可能なインスタンスからデタッチし、到達不能なインスタンスに再アタッチします。到達不能なインスタンスにボリュームをアタッチする際は、先に保存してあったデバイス名を [デバイス] フィールドに入力します。

  16. 到達できないインスタンスを再び開始します。

プライベートキーを紛失しました。Windows インスタンスに接続するにはどうすればよいですか?

新しく起動した Windows インスタンスに接続する際、インスタンスの起動時に指定したキーペアのプライベートキーを使用して、管理者アカウントのパスワードを復号します。

管理者パスワードを紛失し、プライベートキーを使用できなくなった場合は、パスワードをリセットするか、新しいインスタンスを作成する必要があります。詳細については、「Amazon EC2 Windows インスタンスの Windows 管理者パスワードをリセットする」を参照してください。Systems Manager ドキュメントを使用してパスワードをリセットする手順については、「AWS Systems Manager ユーザーガイド」の「 EC2 インスタンスで、パスワードと SSH キーをリセットする」を参照してください。