共用方式為


依事件識別碼對 Azure VM 的 RDP 連線問題進行疑難排解

適用於:✔️ Windows VM

本文說明如何使用事件標識碼,針對防止遠端桌面通訊協定 (RDP) 連線到 Azure 虛擬機 (VM) 的問題進行疑難解答。

徵兆

您嘗試使用遠端桌面通訊協定 (RDP) 工作階段來連線到 Azure VM。 輸入認證之後,聯機會失敗,而且您會收到下列錯誤訊息:

這部電腦無法連線到遠端電腦。 請再次嘗試連線。如果繼續發生問題,請連絡遠端電腦的擁有者或您的網路系統管理員。

若要針對此問題進行疑難解答,請檢閱 VM 上的事件記錄檔,然後參考下列案例。

疑難解答之前

建立備份快照集

若要建立備份快照集,請遵循快照集磁碟中的步驟。

從遠端連線到 VM

若要從遠端連線到 VM,請使用如何使用遠端工具來針對 Azure VM 問題進行疑難解答中的其中一種方法。

案例 1

事件記錄檔

在 CMD 實例中,執行下列命令來檢查事件 1058 或事件 1057 是否在過去 24 小時內記錄在系統記錄檔中:

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
日期: 時間
事件標識碼: 1058
任務類別:
層級: 錯誤
關鍵詞: 傳統
使用者: N/A
Computer: computer
描述: RD 會話主機伺服器無法取代 TLS 連線上用於 RD 工作階段主機伺服器驗證的過期自我簽署憑證。 相關的狀態代碼為 Access 遭到拒絕。

記錄檔名稱: 系統
來源: Microsoft-Windows-TerminalServices-RemoteConnectionManager
日期: 時間
事件標識碼: 1058
任務類別:
層級: 錯誤
關鍵詞: 傳統
使用者: N/A
Computer: computer
描述: RD 會話主機伺服器無法建立新的自我簽署憑證,以用於 TLS 連線上的 RD 會話主機伺服器驗證,相關的狀態代碼已存在。

記錄檔名稱: 系統
來源: Microsoft-Windows-TerminalServices-RemoteConnectionManager
日期: 時間
事件標識碼: 1057
任務類別:
層級: 錯誤
關鍵詞: 傳統
使用者: N/A
Computer: computer
描述: RD 會話主機伺服器無法建立新的自我簽署憑證,以用於 TLS 連線上的 RD 會話主機伺服器驗證。 相關的狀態代碼是 Keyset 不存在

您也可以執行下列命令來檢查 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

記錄檔名稱: 系統
來源: 通道
日期:
事件標識碼: 36870
任務類別:
層級: 錯誤
關鍵字:
使用者: SYSTEM
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,然後按 [ 確定]。

  2. 檔案功能表上,選取新增/移除嵌入式管理單元

  3. 在 [ 可用的嵌入式管理單元 ] 列表中,選取 [ 憑證],然後選取 [ 新增]。

  4. 選取 [電腦帳戶],然後選取 [下一步]。

  5. 選取 [另一部計算機],然後新增發生問題的 VM IP 位址。

    注意

    請嘗試使用內部網路,以避免使用虛擬IP位址。

  6. 選取結束,然後選取 OK

    [選取計算機] 對話框中 [另一部計算機] 選項的螢幕快照。

  7. 展開憑證,移至 [遠端桌面\憑證] 資料夾,以滑鼠右鍵按兩下憑證,然後選取 [ 刪除]。

  8. 重新啟動遠端桌面組態服務:

    net stop SessionEnv
    net start SessionEnv
    

    注意

    此時,如果您從 mmc 重新整理存放區,憑證就會重新出現。

再次嘗試使用 RDP 存取 VM。

更新 TLS/SSL 憑證

如果您將 VM 設定為使用 TLS/SSL 憑證,請執行下列命令以取得指紋。 然後檢查它是否與憑證的指紋相同:

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

記錄檔名稱: 系統
來源: 通道
日期:
事件標識碼: 36871
任務類別:
層級: 錯誤
關鍵字:
使用者: SYSTEM
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
日期: 時間
事件標識碼: 2056
工作類別: (109)
層級: 錯誤
關鍵字:
用戶: 網路服務
Computer: computer fqdn
描述: 找不到來源 Microsoft-Windows-TerminalServices-SessionBroker 的事件標識碼 2056 描述。 本機電腦可能並未安裝引發此事件的元件,或安裝已損毀。 您可以在本機電腦上安裝或修復該元件。
如果事件源自另一部計算機,則顯示信息必須與事件一起儲存。
事件包含下列資訊:


登入資料庫失敗。

記錄檔名稱: Microsoft-Windows-TerminalServices-SessionBroker-Client/Operational
來源: Microsoft-Windows-TerminalServices-SessionBroker-Client
日期: 時間
事件標識碼: 1296
工作類別: (104)
層級: 錯誤
關鍵字:
用戶: 網路服務
Computer: computer fqdn
描述: 找不到來源Microsoft-Windows-TerminalServices-SessionBroker-Client 的事件標識碼 1296 描述。 本機電腦可能並未安裝引發此事件的元件,或安裝已損毀。 您可以在本機電腦上安裝或修復該元件。 如果事件源自另一部計算機,則顯示信息必須與事件一起儲存。 事件包含下列資訊:
text
text
遠端桌面連線代理人尚未準備好進行 RPC 通訊。

原因

發生此問題的原因是遠端桌面連線代理人伺服器的主機名已變更,這不是支持的變更。

主機名具有 Windows 內部資料庫 的專案和相依性,這是遠端桌面服務伺服器陣列為了能夠運作所需的專案和相依性。 建置伺服器陣列之後變更主機名會造成許多錯誤,並可能導致訊息代理程式伺服器停止運作。

解決方法

若要修正此問題,必須重新安裝遠端桌面連線代理人角色和 Windows 內部資料庫。

後續步驟

安全通道事件

安全通道 SSP 技術概觀

RDP 失敗,事件標識碼為 1058 和事件 36870 與遠端桌面會話主機憑證和 SSL 通訊

域控制器上的通道 36872 或安全通道 36870

事件標識碼 1058 — 遠端桌面服務驗證和加密

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。