針對使用 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
疑難排解
針對已加入網域的 VM 進行疑難解答
若要針對此問題進行疑難解答:
- 檢查 VM 是否可以連線到 DC。
- 檢查DC的健康情況。
注意
若要測試DC健康情況,您可以使用位於相同 VNET、子網中的另一個 VM,並使用相同的登入伺服器。
根據連線到 VM 遠端一節中的步驟,使用序列主控台、遠端 CMD 或遠端 PowerShell 連線到有問題的 VM。
判斷 VM 嘗試連線的 DC。在控制台中執行下列命令:
set | find /i "LOGONSERVER"
測試 VM 與 DC 之間安全通道的健康情況。 若要這樣做,請在提升許可權的 PowerShell 實例中執行
Test-ComputerSecureChannel
命令。 此命令會傳回 True 或 False,指出安全通道是否運作:Test-ComputerSecureChannel -verbose
如果通道中斷,請執行下列命令來修復它:
Test-ComputerSecureChannel -repair
請確定 ACTIVE Directory 中的電腦帳戶密碼已在 VM 和 DC 上更新:
Reset-ComputerMachinePassword -Server "<COMPUTERNAME>" -Credential <DOMAIN CREDENTIAL WITH DOMAIN ADMIN LEVEL>
如果 DC 與 VM 之間的通訊良好,但 DC 狀況不佳,無法開啟 RDP 工作階段,您可以嘗試重新啟動 DC。
如果上述命令未修正網域的通訊問題,您可以將此 VM 重新加入網域。 若要這樣做,請遵循下列步驟:
使用下列內容建立名為 Unjoin.ps1 的腳本,然後在 Azure 入口網站 上將腳本部署為自定義腳本擴充功能:
cmd /c "netdom remove <<MachineName>> /domain:<<DomainName>> /userD:<<DomainAdminhere>> /passwordD:<<PasswordHere>> /reboot:10 /Force"
此腳本會強制從網域移除 VM,並在 10 秒後重新啟動 VM。 然後,您必須清除網域端的 Computer 物件。
完成清除之後,請將此 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 意見反應社群提交產品意見反應。