イベント ID を使用した、Azure VM の RDP 接続に関する問題のトラブルシューティング

この記事では、Azure 仮想マシン (VM) へのリモート デスクトップ プロトコル (RDP) 接続を妨げる問題のトラブルシューティングにイベント ID を使用する方法を説明します。

現象

リモート デスクトップ プロトコル (RDP) セッションを使用して Azure VM に接続しようとします。 資格情報を入力した後、接続が失敗し、次のようなエラー メッセージを受け取ります。

このコンピューターはリモート コンピューターに接続できません。 問題が解決しない場合は、リモート コンピューターの所有者またはネットワーク管理者に問い合わせてください。

この問題をトラブルシューティングするには、VM でイベント ログを確認した後、以下のシナリオを参照してください。

トラブルシューティングを行う前に

バックアップ スナップショットの作成

バックアップ スナップショットを作成するには、「ディスクのスナップショットの作成」の手順に従います。

VM にリモート接続する

VM にリモート接続するには、「How to use remote tools to troubleshoot Azure VM issues」(リモート ツールを使用して Azure VM の問題をトラブルシューティングする) で説明されているいずれかの方法を使用します。

シナリオ 1

イベント ログ

CMD インスタンスで次のコマンドを実行して、過去 24 時間以内にイベント 1058 またはイベント 1057 がシステム ログに記録されているかどうかを確認します。

wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Microsoft-Windows-TerminalServices-RemoteConnectionManager'] and EventID=1058 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more
wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Microsoft-Windows-TerminalServices-RemoteConnectionManager'] and EventID=1057 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more

ログ名: システム
ソース: Microsoft-Windows-TerminalServices-RemoteConnectionManager
日付:時刻
イベント ID: 1058
タスク カテゴリ: なし
レベル: エラー
キーワード: クラシック
ユーザー: N/a
Computer:computer
説明: RD セッション ホスト サーバーは、TLS 接続での RD セッション ホスト サーバー認証に使用される期限切れの自己署名証明書を置き換えることができませんでした。 関連する状態コードは "アクセスが拒否されました" でした。

ログ名: システム
ソース: Microsoft-Windows-TerminalServices-RemoteConnectionManager
日付:時刻
イベント ID: 1058
タスク カテゴリ: なし
レベル: エラー
キーワード: クラシック
ユーザー: N/a
Computer:computer
説明: RD セッション ホスト サーバーは、TLS 接続での RD セッション ホスト サーバー認証に使用される新しい自己署名証明書を作成できませんでした。関連する状態コードは「オブジェクトは既に存在します」でした。

ログ名: システム
ソース: Microsoft-Windows-TerminalServices-RemoteConnectionManager
日付:時刻
イベント ID: 1057
タスク カテゴリ: なし
レベル: エラー
キーワード: クラシック
ユーザー: N/a
Computer:computer
説明: RD セッション ホスト サーバーは、TLS 接続での RD セッション ホスト サーバー認証に使用される新しい自己署名証明書を作成できませんでした。 関連する状態コードは "キー セットがありません" でした。

次のコマンドを実行して、SCHANNEL エラー イベント 36872 および 36870 を確認することもできます。

wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Schannel'] and EventID=36870 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more
wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Schannel'] and EventID=36872 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more

ログ名: システム
ソース: Schannel
日付:
イベント ID: 36870
タスク カテゴリ: なし
レベル: エラー
キーワード:
ユーザー: システム
Computer:computer
説明: TLS サーバー資格情報の秘密キーにアクセスにしようとしているときに致命的なエラーが発生しました。 暗号化モジュールから返されたエラー コードは 0x8009030D です。
内部エラーの状態は 10001 です。

原因

この問題は、VM 上の MachineKeys フォルダー内にあるローカルの RSA 暗号化キーにアクセスできないために発生します。 この問題は、次のいずれかの理由で発生することがあります。

  1. Machinekeys フォルダーまたは RSA ファイルでのアクセス許可の構成が正しくない。

  2. RSA キーが壊れているか、ない。

解像度

この問題をトラブルシューティングするには、以下の手順を使用して、RDP 証明書への適切なアクセス許可を設定する必要があります。

MachineKeys フォルダーへのアクセス許可を付与する

  1. 次の内容を使用してスクリプトを作成します。

    remove-module psreadline 
    icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\BeforeScript_permissions.txt
    takeown /f "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /a /r
    icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\System:(F)"
    icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\NETWORK SERVICE:(R)"
    icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "BUILTIN\Administrators:(F)"
    icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\AfterScript_permissions.txt
    Restart-Service TermService -Force
    
  2. このスクリプトを実行して、MachineKey フォルダーのアクセス許可をリセットし、RSA ファイルを既定値にリセットします。

  3. 再び VM にアクセスしてみます。

スクリプトを実行した後は、アクセス許可の問題が発生している次のファイルを確認できます。

  • c:\temp\BeforeScript_permissions.txt
  • c:\temp\AfterScript_permissions.txt

RDP 自己署名証明書を更新する

問題が解決しない場合は、次のスクリプトを実行して、RDP の自己署名証明書が更新されることを確認します。

Import-Module PKI
Set-Location Cert:\LocalMachine
$RdpCertThumbprint = 'Cert:\LocalMachine\Remote Desktop\'+((Get-ChildItem -Path 'Cert:\LocalMachine\Remote Desktop\').thumbprint)
Remove-Item -Path $RdpCertThumbprint
Stop-Service -Name "SessionEnv"
Start-Service -Name "SessionEnv"

証明書を更新できない場合は、以下の手順に従って、証明書の削除を試みます。

  1. 同じ VNET 内の別の VM で、 [ファイル名を指定して実行] ボックスを開き、「mmc」と入力して、 [OK] をクリックします。

  2. [ファイル] メニューの [スナップインの追加と削除] を選択します。

  3. [利用できるスナップイン] ボックスの一覧で [証明書] を選択し、 [追加] を選択します。

  4. [コンピューター アカウント] を選択し、 [次へ] を選択します。

  5. [別のコンピューター] を選択してから、問題が発生している VM の IP アドレスを追加します。

    注:

    内部ネットワークを使用して、仮想 IP アドレスの使用を回避します。

  6. [完了] を選択し、 [OK] を選択します。

    [コンピューターの選択] ダイアログの [別のコンピューター] オプションのスクリーンショット。

  7. 証明書を展開し、Remote Desktop\Certificates フォルダーに移動し、証明書を右クリックして、 [削除] を選択します。

  8. リモート デスクトップ構成サービスを再起動します。

    net stop SessionEnv
    net start SessionEnv
    

    注:

    この時点で、mmc からストアを更新した場合は、証明書が表示されます。

RDP を使用して、VM へのアクセスを再び試みます。

TLS/SSL 証明書を更新する

TLS/SSL 証明書を使用するように VM を設定した場合は、次のコマンドを実行して拇印を取得します。 そして、証明書の拇印と同じかどうかを確認します。

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SSLCertificateSHA1Hash

同じでない場合は、拇印を変更します。

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SSLCertificateSHA1Hash /t REG_BINARY /d <CERTIFICATE THUMBPRINT>

キーを削除し、RDP が RDP に自己署名証明書を使用するようにしてみることもできます。

reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SSLCertificateSHA1Hash

シナリオ 2

イベント ログ

CMD インスタンスで次のコマンドを実行して、過去 24 時間以内に SCHANNEL エラー イベント 36871 がシステム ログに記録されているかどうかを確認します。

wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Schannel'] and EventID=36871 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more

ログ名: システム
ソース: Schannel
日付:
イベント ID: 36871
タスク カテゴリ: なし
レベル: エラー
キーワード:
ユーザー: システム
Computer:computer
説明: TLS サーバー資格証明を作成しているときに致命的なエラーが発生しました。 内部エラーの状態は 10013 です。

原因

この問題は、セキュリティ ポリシーによって発生します。 古いバージョンの TLS (1.0 など) が無効になっていると、RDP アクセスが失敗します。

解決方法

RDP では、既定のプロトコルとして TLS 1.0 が使用されます。 ただし、プロトコルが新しい TLS 1.1 に変更されている場合があります。

この問題のトラブルシューティングについては、「RDP を使用して Azure VM に接続するときの認証エラーのトラブルシューティング」をご覧ください。

シナリオ 3

リモート デスクトップ接続ブローカー ロールを VM にインストールしてある場合は、過去 24 時間以内にイベント 2056 またはイベント 1296 が発生しているかどうかを確認します。 CMD インスタンスで、次のコマンドを実行します。

wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name=' Microsoft-Windows-TerminalServices-SessionBroker '] and EventID=2056 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more
wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name=' Microsoft-Windows-TerminalServices-SessionBroker-Client '] and EventID=1296 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more

ログ名: Microsoft-Windows-TerminalServices-SessionBroker/Operational
ソース: Microsoft-Windows-TerminalServices-SessionBroker
日付:時刻
イベント ID: 2056
タスク カテゴリ: (109)
レベル: エラー
キーワード:
ユーザー: NETWORK SERVICE
Computer:computer fqdn
説明: ソース Microsoft-Windows-TerminalServices-SessionBroker からのイベント ID 2056 の説明が見つかりません。 このイベントを発生させるコンポーネントがローカル コンピューターにインストールされていないか、インストールが壊れています。 ローカル コンピューターにコンポーネントをインストールするか、コンポーネントを修復してください。
イベントが別のコンピューターから発生している場合、イベントと共に表示情報を保存する必要があります。
イベントには次の情報が含まれています:
NULL
NULL
データベースにログオンできませんでした。

ログ名: Microsoft-Windows-TerminalServices-SessionBroker-Client/Operational
ソース: Microsoft-Windows-TerminalServices-SessionBroker-Client
日付:時刻
イベント ID: 1296
タスク カテゴリ: (104)
レベル: エラー
キーワード:
ユーザー: NETWORK SERVICE
Computer:computer fqdn
説明: ソース Microsoft-Windows-TerminalServices-SessionBroker-Client からのイベント ID 1296 の説明が見つかりません。 このイベントを発生させるコンポーネントがローカル コンピューターにインストールされていないか、インストールが壊れています。 ローカル コンピューターにコンポーネントをインストールするか、コンポーネントを修復してください。 イベントが別のコンピューターから発生している場合、イベントと共に表示情報を保存する必要があります。 イベントには次の情報が含まれています:
text
text
リモート デスクトップ接続ブローカーで RPC 通信の準備ができていません。

原因

この問題は、リモート デスクトップ接続ブローカー サーバーのホスト名が変更されたために発生します。これは、サポートされている変更ではありません。

ホスト名には Windows Internal Database に対するエントリと依存関係があり、リモート デスクトップ サービス ファームが動作するために必要です。 ファームが既に構築された後でホスト名を変更すると、多くのエラーが発生し、ブローカー サーバーの動作が停止する可能性があります。

解決方法

この問題を解決するには、リモート デスクトップ接続ブローカー ロールと Windows Internal Database を再インストールする必要があります。

次の手順

Schannel イベント

Schannel SSP の技術概要

リモート デスクトップ セッション ホスト証明書と SSL 通信を使用するとイベント ID 1058 およびイベント 36870 で RDP が失敗する

ドメイン コントローラーでの Schannel 36872 または Schannel 36870

イベント ID 1058 — リモート デスクトップ サービスの認証と暗号化

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。