遠端桌面 錯誤:出現了內部錯誤

今天被問到一個奇妙的問題
透過mstsc.exe連線Windows時一直出現 錯誤:出現的了內部錯誤的問題
一開始想說應該是Server的RDP service發瘋了,重啟看看
卻發現重啟只能解決當下的問題,過一小段時間又會發生一樣的問題
而錯誤訊息少到連有點軟的KB都明確地確定是什麼問題導致
搜尋了一圈,大致上有幾個解法

  1. 重啟RDP Service,同時用管理員權限執行cmd
    輸入指令

    netsh winsock reset 

    後重啟電腦
    恩,測試了,看起來也只是暫時正常
    過沒多就服務就又回到內部錯誤的錯誤訊息卡住

  2. 將RDP的security layer設定為RDP
    開啟gpedit.msc
    找到電腦設定>系統管理範本>Windows元件>遠端桌面服務>遠多=端桌面工作階段主機>安全性
    找到需要對端(RDP)連線使用特定安全層
    將設定改為”已啟用”,下方選擇”RDP”

    設定完成後看起來就解決問題了,可以恢復登入,只是變成傳統WinXP時代的畫面
    跳到登入畫面後輸入帳號密碼
    看似解決了問題,然而有點軟的KB中的說明寫到
    “不建議使用原始 RDP 加密 (相對於 SSL 加密)”
    看到這只好再找其他方法(畢竟總不能讓人不小心就把主機給端了吧)
  3. 重新檢查RDP安全性相關設定
    有點軟的AzureKB中,找到了這次的最終解法
    (有點軟你的KB編寫方式也真神秘…居然是要去Azure那邊才找的到)
    該篇KB中提到

    此問題可能會因為下列原因而發生:虛擬機器可能已受到攻擊。無法存取本機 RSA 加密金鑰。TLS 通訊協定已停用。憑證已損毀或過期。

    依照該篇的說明依序執行
    開啟Powershell更新 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"

    啟用所有支援的 TLS 版本

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f

經過以上操作,該問題就不再出現了,看起來是因為憑證跟TLS版本的問題造成
私心希望有點軟可以在錯誤訊息上面多給點資訊阿…
每次處理問題都搞得好像在通靈一樣😅

 

發表迴響