共用方式為


針對使用 RDP 來連線至 Azure VM 時的驗證錯誤進行疑難排解

適用於:✔️ Windows VM

本文可協助您針對使用遠端桌面通訊協定 (RDP) 連線來連線到 Azure 虛擬機 (VM) 時發生的驗證錯誤進行疑難解答。

注意

本篇文章實用嗎? 您的輸入對我們很重要。 請使用此頁面上的 [ 意見反應 ] 按鈕,讓我們知道這篇文章為您運作得有多好,或我們如何加以改善。

徵兆

您擷取顯示歡迎畫面的 Azure VM 螢幕快照,並指出作業系統正在執行。 不過,當您嘗試使用遠端桌面連線連線到 VM 時,會收到下列其中一個錯誤訊息:

  • 發生驗證錯誤。 無法連絡本機安全性授權。
  • 您嘗試連線到的遠端電腦需要網路層級驗證 (NLA),但無法連絡您的 Windows 域控制器來執行 NLA。 如果您是遠端電腦上的系統管理員,可以使用 [系統內容] 對話方塊中 [遠端] 索引標籤上的選項停用 NLA。
  • 這部電腦無法連線到遠端電腦。 請再次嘗試連線。如果繼續發生問題,請連絡遠端電腦的擁有者或您的網路系統管理員。

原因

NLA 可能會封鎖 VM 的 RDP 存取的原因有很多:

  • VM 無法與域控制器通訊(DC)。 此問題可能會防止 RDP 會話使用網域認證來存取 VM。 不過,您仍然可以使用本機系統管理員認證登入。 此問題可能發生在下列情況中:
    • 此 VM 與 DC 之間的 Active Directory 安全性通道已中斷。
    • VM 有帳戶密碼的舊復本,而 DC 有較新的複本。
    • 此 VM 所連線的 DC 狀況不良。
  • VM 的加密層級高於用戶端計算機所使用的加密層級。
  • VM 上已停用 TLS 1.0、1.1 或 1.2(伺服器)通訊協定。 VM 已設定為使用網域認證來停用登入,且本機安全性授權單位 (LSA) 設定不正確。
  • VM 已設定為只接受符合聯邦資訊處理標準 (FIPS) 規範的演算法連線。 這通常是使用 Active Directory 原則來完成。 這是罕見的設定,但只能針對遠端桌面連線強制執行 FIPS。

疑難解答之前

建立備份快照集

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

從遠端連線到 VM

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

組策略客戶端服務

如果這是已加入網域的 VM,請先停止組策略客戶端服務,以防止任何 Active Directory 原則覆寫變更。 若要這樣做,請執行下列命令:

REM Disable the member server to retrieve the latest GPO from the domain upon start
REG add "HKLM\SYSTEM\CurrentControlSet\Services\gpsvc" /v Start /t REG_DWORD /d 4 /f

修正問題之後,請還原此 VM 的功能,以連絡網域以從網域擷取最新的 GPO。 若要執行這項操作,請執行下列命令:

sc config gpsvc start= auto
sc start gpsvc

gpupdate /force

如果已還原變更,表示 Active Directory 原則會造成問題。

因應措施

若要連線到 VM 並解決原因,您可以暫時停用 NLA。 若要停用 NLA,請使用下列命令,或使用DisableNLA執行命令中的腳本。

REM Disable the Network Level Authentication
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0

然後重新啟動 VM,然後繼續進行疑難解答一節。

解決重新啟用 NLA 的問題後,請執行下列命令,然後重新啟動 VM:

REG add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v disabledomaincreds /t REG_DWORD /d 0 /f
REG add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f

疑難排解

  1. 針對已加入網域的 VM 進行疑難解答。
  2. 針對獨立 VM 進行疑難解答。

針對已加入網域的 VM 進行疑難解答

若要針對此問題進行疑難解答:

  1. 檢查 VM 是否可以連線到 DC。
  2. 檢查DC的健康情況。

注意

若要測試DC健康情況,您可以使用位於相同 VNET、子網中的另一個 VM,並使用相同的登入伺服器。

根據連線到 VM 遠端一節中的步驟,使用序列主控台、遠端 CMD 或遠端 PowerShell 連線到有問題的 VM。

  1. 判斷 VM 嘗試連線的 DC。在控制台中執行下列命令:

    set | find /i "LOGONSERVER"
    
  2. 測試 VM 與 DC 之間安全通道的健康情況。 若要這樣做,請在提升許可權的 PowerShell 實例中執行 Test-ComputerSecureChannel 命令。 此命令會傳回 True 或 False,指出安全通道是否運作:

    Test-ComputerSecureChannel -verbose
    

    如果通道中斷,請執行下列命令來修復它:

    Test-ComputerSecureChannel -repair
    
  3. 請確定 ACTIVE Directory 中的電腦帳戶密碼已在 VM 和 DC 上更新:

    Reset-ComputerMachinePassword -Server "<COMPUTERNAME>" -Credential <DOMAIN CREDENTIAL WITH DOMAIN ADMIN LEVEL>
    

如果 DC 與 VM 之間的通訊良好,但 DC 狀況不佳,無法開啟 RDP 工作階段,您可以嘗試重新啟動 DC。

如果上述命令未修正網域的通訊問題,您可以將此 VM 重新加入網域。 若要這樣做,請遵循下列步驟:

  1. 使用下列內容建立名為 Unjoin.ps1 的腳本,然後在 Azure 入口網站 上將腳本部署為自定義腳本擴充功能:

    cmd /c "netdom remove <<MachineName>> /domain:<<DomainName>> /userD:<<DomainAdminhere>> /passwordD:<<PasswordHere>> /reboot:10 /Force"
    

    此腳本會強制從網域移除 VM,並在 10 秒後重新啟動 VM。 然後,您必須清除網域端的 Computer 物件。

  2. 完成清除之後,請將此 VM 重新加入網域。 若要這樣做,請使用下列內容建立名為 JoinDomain.ps1 的腳本,然後在 Azure 入口網站 上將腳本部署為自定義腳本擴充功能:

    cmd /c "netdom join <<MachineName>> /domain:<<DomainName>> /userD:<<DomainAdminhere>> /passwordD:<<PasswordHere>> /reboot:10"
    

注意

這會使用指定的認證來聯結網域上的 VM。

如果 Active Directory 通道狀況良好,計算機密碼會更新,且域控制器如預期般運作,請嘗試下列步驟。

如果問題持續發生,請檢查網域認證是否已停用。 若要這樣做,請開啟提升許可權的命令提示字元視窗,然後執行下列命令來判斷 VM 是否已設定為停用網域帳戶以登入 VM:

REG query "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v disabledomaincreds

如果金鑰設定為 1,這表示伺服器已設定為不允許網域認證。 將此金鑰變更為 0。

針對獨立 VM 進行疑難解答

檢查 MinEncryptionLevel

在 CMD 實例中,執行下列命令來查詢 MinEncryptionLevel 登錄值:

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

根據登錄值,請遵循下列步驟:

  • 4 (FIPS):檢查符合 FIP 規範的演算法連線。

  • 3 (128 位加密):執行下列命令,將嚴重性設定為 2:

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v MinEncryptionLevel /t REG_DWORD /d 2 /f
    
  • 2 (用戶端指定的最高加密可能):您可以執行下列命令,嘗試將加密設定為最小值 1

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v MinEncryptionLevel /t REG_DWORD /d 1 /f
    

重新啟動 VM,讓登錄的變更生效。

TLS 版本

根據系統而定,RDP 會使用 TLS 1.0、1.1 或 1.2(伺服器)通訊協定。 若要查詢 VM 上設定這些通訊協定的方式,請開啟 CMD 實例,然後執行下列命令:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled
reg query "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled
reg query "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled

如果傳回的值不是全部 1,這表示通訊協定已停用。 若要啟用這些通訊協定,請執行下列命令:

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

針對其他通訊協定版本,您可以執行下列命令:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS x.x\Server" /v Enabled
reg query "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS x.x\Server" /v Enabled

注意

從 SCHANNEL 錯誤的客體 OS 記錄取得 SSH/TLS 版本 x.x。

檢查符合 FIP 規範的演算法連線

您可以強制執行遠端桌面,只使用符合 FIP 規範的演算法連線。 這可以使用登錄機碼來設定。 若要這樣做,請開啟提升許可權的命令提示字元視窗,然後查詢下列索引鍵:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy" /v Enabled

如果命令傳 回 1,請將登錄值變更為 0

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy" /v Enabled /t REG_DWORD /d 0

檢查 VM 上目前的 MinEncryptionLevel

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

如果命令傳 回 4,請將登錄值變更為 2

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v MinEncryptionLevel /t REG_DWORD /d 2

重新啟動 VM,讓登錄的變更生效。

下一步

與我們連絡,以取得說明

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