一般的なリモート デスクトップ接続のトラブルシューティング

仮想エージェントを試す - RD セッションの接続に関する一般的な問題をすばやく特定して修正するのに役立ちます

リモート デスクトップ クライアントがリモート デスクトップに接続できないが、原因の特定に役立つメッセージやその他の症状が表示されない場合は、次の手順を使用します。

RDP プロトコルの状態を確認する

ローカル コンピューターの RDP プロトコルの状態を確認する

ローカル コンピューターで RDP プロトコルの状態をチェックして変更するには、「リモート デスクトップを有効にする方法」を参照してください。

注:

リモート デスクトップ オプションを使用できない場合は、「グループ ポリシー オブジェクトが RDP をブロックしているかどうかを確認する」を参照してください。

リモート コンピューター上の RDP プロトコルの状態を確認する

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護のために、レジストリを変更する前にレジストリをバックアップして、問題が発生した場合にレジストリを復元できるようにします。 レジストリをバックアップおよび復元する方法の詳細については、「Windows でレジストリをバックアップおよび復元する方法」を参照してください。

リモート コンピューターで RDP プロトコルの状態をチェックして変更するには、ネットワーク レジストリ接続を使用します。

  1. まず、[ スタート] メニューに移動し、[ 実行] を選択します。 表示されるテキスト ボックス に「regedt32」と入力します。

  2. [レジストリ] エディターで [ファイル] を選択し、[ネットワーク レジストリの接続] を選択します。

  3. [ コンピューターの選択 ] ダイアログ ボックスで、リモート コンピューターの名前を入力し、[ 名前の確認] を選択し、[OK] を選択 します

  4. に移動し、 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server に移動します HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services

    fDenyTSConnections エントリを示すレジストリ エディターのスクリーンショット。

    • fDenyTSConnections キーの値が 0 の場合、RDP が有効になります。
    • fDenyTSConnections キーの値が 1 の場合、RDP は無効になります。
  5. RDP を有効にするには、 fDenyTSConnections の値を 1 から 0 に変更します。

グループ ポリシー オブジェクト (GPO) がローカル コンピューター上の RDP をブロックしているかどうかを確認する

ユーザー インターフェイスで RDP を有効にできない場合、または変更後に fDenyTSConnections の値が 1 に戻る場合、GPO によってコンピューター レベルの設定がオーバーライドされる可能性があります。

ローカル コンピューターでグループ ポリシーの構成をチェックするには、管理者としてコマンド プロンプト ウィンドウを開き、次のコマンドを入力します。

gpresult /H c:\gpresult.html

このコマンドが完了したら、 gpresult.htmlを開きます。 [コンピューターの構成]\[管理用テンプレート]\[Windows コンポーネント]\[リモート デスクトップ サービス]\[リモート デスクトップ セッション ホスト]\Connectionsで、[リモート デスクトップ サービスを使用してユーザーがリモートに接続できるようにする] ポリシーを見つけます。

  • このポリシーの設定が [有効] の場合、グループ ポリシーは RDP 接続をブロックしていません。

  • このポリシーの設定が [無効] の場合は、[成功した GPO] をチェックします。 これは、RDP 接続をブロックしている GPO です。

    ドメイン レベルの GPO ブロック RDP が RDP を無効にしている gpresult.html のセグメントの例のスクリーンショット。

    ローカル グループ ポリシーが RDP を無効にしている gpresult.html のセグメントの例のスクリーンショット。

GPO がリモート コンピューターの RDP をブロックしているかどうかを確認する

リモート コンピューターでグループ ポリシー構成をチェックするには、コマンドはローカル コンピューターの場合とほぼ同じです。

gpresult /S <computer name> /H c:\gpresult-<computer name>.html

このコマンドによって生成されるファイル (gpresult-computer< name>.html) は、ローカル コンピューターのバージョン (gpresult.html) と同じ情報形式を使用します。

ブロックしている GPO の変更

これらの設定は、グループ ポリシー オブジェクト エディター (GPE) と グループ ポリシー 管理コンソール (GPM) で変更できます。 グループ ポリシーの使用方法の詳細については、「高度なグループ ポリシー管理」を参照してください。

ブロッキング ポリシーを変更するには、次のいずれかの方法を使用します。

  • GPE で、適切なレベルの GPO (ローカルやドメインなど) にアクセスし、[コンピューターの構成>] [管理用テンプレート>] [Windows コンポーネント>] [リモート デスクトップ サービス] [リモート デスクトップ セッション ホスト>Connections>リモート デスクトップ サービスを使用してリモート接続するユーザーを許可する] に移動します。>
    1. ポリシーを [有効] または [ 未構成] に設定します。
    2. 影響を受けるコンピューターで、管理者としてコマンド プロンプト ウィンドウを開き、コマンドを gpupdate /force 実行します。
  • GPM で、影響を受けるコンピューターにブロック ポリシーが適用されている組織単位 (OU) に移動し、OU からポリシーを削除します。

RDP サービスの状態を確認する

ローカル (クライアント) コンピューターとリモート (ターゲット) コンピューターの両方で、次のサービスが実行されている必要があります。

  • リモート デスクトップ サービス (TermService)
  • リモート デスクトップ サービス UserMode ポート リダイレクター (UmRdpService)

サービス MMC スナップインを使用して、ローカルまたはリモートでサービスを管理できます。 PowerShell を使用して、サービスをローカルまたはリモートで管理することもできます (リモート コンピューターがリモート PowerShell コマンドレットを受け入れるように構成されている場合)。

サービス MMC スナップインのリモート デスクトップ サービスのスクリーンショット。

いずれかのコンピューターで、一方または両方のサービスが実行されていない場合は、それらを起動します。

注:

リモート デスクトップ サービスを開始する場合は、[ はい ] を選択して、リモート デスクトップ サービス UserMode ポート リダイレクター サービスを自動的に再起動します。

RDP リスナーが機能していることを確認する

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護のために、レジストリを変更する前にレジストリをバックアップして、問題が発生した場合にレジストリを復元できるようにします。 レジストリをバックアップおよび復元する方法の詳細については、「Windows でレジストリをバックアップおよび復元する方法」を参照してください。

RDP リスナーの状態を確認する

この手順では、管理アクセス許可を持つ PowerShell インスタンスを使用します。 ローカル コンピューターの場合は、管理アクセス許可を持つコマンド プロンプトを使用することもできます。 ただし、同じコマンドレットがローカルとリモートの両方で機能するため、この手順では PowerShell を使用します。

  1. リモート コンピューターに接続するには、次のコマンドレットを実行します。

    Enter-PSSession -ComputerName <computer name>
    
  2. qwinsta を入力します。

    コンピューターのポートでリッスンしているプロセスを一覧表示する qwinsta コマンドのスクリーンショット。

  3. リストに の状態Listenが含まれているrdp-tcp場合、RDP リスナーは動作しています。 [ RDP リスナー ポートの確認] に進みます。 それ以外の場合は、手順 4. に進みます。

  4. 稼働中のコンピューターから RDP リスナー構成をエクスポートします。

    1. 影響を受けるコンピューターと同じバージョンのオペレーティング システムを持つコンピューターにサインインし、そのコンピューターのレジストリにアクセスします (たとえば、レジストリ エディターを使用)。

    2. 次のレジストリ エントリに移動します。

      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

    3. エントリをファイルに .reg エクスポートします。 たとえば、レジストリ エディターでエントリを右クリックし、[エクスポート] を選択し、エクスポートした設定のファイル名を入力します。

    4. エクスポートした .reg ファイルを影響を受けるコンピューターにコピーします。

  5. RDP リスナー構成をインポートするには、影響を受けるコンピューターに対する管理アクセス許可を持つ PowerShell ウィンドウを開きます (または、PowerShell ウィンドウを開き、影響を受けるコンピューターにリモートで接続します)。

    1. 既存のレジストリ エントリをバックアップするには、次のコマンドレットを入力します。

      cmd /c 'reg export "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-tcp" C:\Rdp-tcp-backup.reg'
      
    2. 既存のレジストリ エントリを削除するには、次のコマンドレットを入力します。

      Remove-Item -path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-tcp' -Recurse -Force
      
    3. 新しいレジストリ エントリをインポートし、サービスを再起動するには、次のコマンドレットを入力します。

      cmd /c 'regedit /s c:\<filename>.reg'
      Restart-Service TermService -Force
      

      filename> をエクスポートした.regファイルの名前に置き換えます<。

  6. リモート デスクトップ接続をもう一度試して、構成をテストします。 それでも接続できない場合は、影響を受けるコンピューターを再起動します。

  7. それでも接続できない場合は、RDP 自己署名証明書の状態をチェックします。

RDP 自己署名証明書の状態を確認する

  1. それでも接続できない場合は、証明書 MMC スナップインを開きます。 管理する証明書ストアを選択するように求められたら、[ コンピューター アカウント] を選択し、影響を受けるコンピューターを選択します。
  2. [リモート デスクトップ] の [証明書] フォルダーで、RDP 自己署名証明書を削除します。
  3. 影響を受けるコンピューターで、リモート デスクトップ サービス サービスを再起動します。
  4. [証明書] スナップインを更新します。
  5. RDP 自己署名証明書が再作成されていない場合は、MachineKeys フォルダーのアクセス許可をチェックします

MachineKeys フォルダーのアクセス許可を確認する

  1. 影響を受けるコンピューターでエクスプローラーを開き、C:\ProgramData\Microsoft\Crypto\RSA\に移動します。
  2. [MachineKeys] を右クリックし、[プロパティ>] [セキュリティ>の詳細設定] を選択します。
  3. 次のアクセス許可が構成されていることを確認します。
    • Builtin\Administrators: フル コントロール
    • すべてのユーザー: 読み取り書き込み

RDP リスナー ポートを確認する

ローカル (クライアント) コンピューターとリモート (ターゲット) コンピューターの両方で、RDP リスナーがポート 3389 でリッスンしている必要があります。 このポートを使用するアプリケーションは他にありません。

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護のために、レジストリを変更する前にレジストリをバックアップして、問題が発生した場合にレジストリを復元できるようにします。 レジストリをバックアップおよび復元する方法の詳細については、「Windows でレジストリをバックアップおよび復元する方法」を参照してください。

RDP ポートをチェックまたは変更するには、レジストリ エディターを使用します。

  1. [スタート] メニューに移動し、[ 実行] を選択し、表示されるテキスト ボックスに 「regedt32 」と入力します。

    • リモート コンピューターに接続するには、[ ファイル] を選択し、[ ネットワーク レジストリの接続] を選択します。
    • [ コンピューターの選択 ] ダイアログ ボックスで、リモート コンピューターの名前を入力し、[ 名前の確認] を選択し、[OK] を選択 します
  2. レジストリを開き、 に移動します HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\<listener>

    RDP プロトコルの PortNumber サブキーのスクリーンショット。

  3. PortNumber3389 以外の値がある場合は、3389 に変更します。

    重要

    リモート デスクトップ サービスは、別のポートを使用して操作できます。 ただし、これを行うことをお勧めしません。 この記事では、その種類の構成のトラブルシューティング方法については説明しません。

  4. ポート番号を変更した後、リモート デスクトップ サービス サービスを再起動します。

別のアプリケーションが同じポートを使用していないことを確認する

この手順では、管理アクセス許可を持つ PowerShell インスタンスを使用します。 ローカル コンピューターの場合は、管理アクセス許可を持つコマンド プロンプトを使用することもできます。 ただし、同じコマンドレットがローカルとリモートで動作するため、この手順では PowerShell を使用します。

  1. PowerShell のウィンドウを開きます。 リモート コンピューターに接続するには、「」と入力します Enter-PSSession -ComputerName <computer name>

  2. 次のコマンドを入力します:

    cmd /c 'netstat -ano | find "3389"'
    

    ポートとそのリッスンしているサービスの一覧を生成する netstat コマンドのスクリーンショット。

  3. [リッスン中] 状態の TCP ポート 3389 (または割り当てられた RDP ポート) のエントリを探します。

    注:

    そのポートを使用するプロセスまたはサービスのプロセス識別子 (PID) が PID 列の下に表示されます。

  4. ポート 3389 (または割り当てられた RDP ポート) を使用しているアプリケーションを確認するには、次のコマンドを入力します。

    cmd /c 'tasklist /svc | find "<pid listening on 3389>"'
    

    特定のプロセスの詳細を報告するタスクリスト コマンドのスクリーンショット。

  5. (出力から) ポートに関連付けられている PID 番号のエントリを netstat 探します。 その PID に関連付けられているサービスまたはプロセスが右側の列に表示されます。

  6. リモート デスクトップ サービス (TermServ.exe) 以外のアプリケーションまたはサービスがポートを使用している場合は、次のいずれかの方法を使用して競合を解決できます。

    • 別のポートを使用するように他のアプリケーションまたはサービスを構成します (推奨)。
    • 他のアプリケーションまたはサービスをアンインストールします。
    • 別のポートを使用するように RDP を構成し、リモート デスクトップ サービス サービスを再起動します (推奨されません)。

ファイアウォールが RDP ポートをブロックしているかどうかを確認する

このツールを psping 使用して、ポート 3389 を使用して影響を受けるコンピューターに到達できるかどうかをテストします。

  1. 影響を受けない別のコンピューターに移動し、 psping をダウンロードします

  2. 管理者としてコマンド プロンプト ウィンドウを開き、インストールした pspingディレクトリに変更し、次のコマンドを入力します。

    psping -accepteula <computer IP>:3389
    
  3. コマンドの出力で、 psping 次のような結果が得られます。

    • Connecting to \<computer IP\>: リモート コンピューターに到達可能です。
    • (0% loss): 接続の試行はすべて成功しました。
    • The remote computer refused the network connection: リモート コンピューターに到達できません。
    • (100% loss): 接続の試行がすべて失敗しました。
  4. 複数のコンピューターでを実行 psping して、影響を受けるコンピューターに接続する機能をテストします。

  5. 影響を受けるコンピューターが、他のすべてのコンピューター、他のコンピューター、または他の 1 台のコンピューターからの接続をブロックするかどうかに注意してください。

  6. 推奨される次の手順:

    • ネットワーク管理者Engage、ネットワークで影響を受けるコンピューターへの RDP トラフィックが許可されていることを確認します。
    • ソース コンピューターと影響を受けるコンピューター (影響を受けるコンピューターの Windows ファイアウォールを含む) の間のファイアウォールの構成を調査して、ファイアウォールが RDP ポートをブロックしているかどうかを判断します。