Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何對使用 RDP 連線至 EC2 Windows 執行個體時的驗證錯誤進行疑難排解?
當我使用遠端桌面通訊協定 (RDP) 登入 Amazon Elastic Compute Cloud (Amazon EC2) Windows 執行個體時,收到驗證錯誤。
簡短描述
當您使用 RDP 登入 Amazon EC2 Windows 執行個體時,可能會收到下列驗證錯誤:
「發生驗證錯誤。無法聯絡本地安全機構。」
「您嘗試連接的遠端電腦需要網路層級身分驗證 (NLA),但無法聯絡您的 Windows 網域控制器來執行 NLA。如果您是遠端電腦的系統管理員,則可以使用『系統屬性』對話方塊的『遠端』標籤上的選項來停用 NLA。」
下列情況下可能會發生這些錯誤:
- 伺服器的網路層驗證 (NLA) 已開啟。
- 在 RDP 登入時,您的網域與加入此網域的 EC2 執行個體之間的信任關係失敗。
您可以使用 AWSSupport-TroubleshootRDP 執行手冊,或手動疑難排解錯誤。
解決方法
已為伺服器開啟 NLA
當執行個體與網域控制器的連線中斷時,就會發生 NLA 錯誤,因為網域憑證未經驗證。若要解決此問題,請使用下列方法之一在無法存取的執行個體上停用 NLA:
- 執行 AWS Systems Manager AWSSupport-TroubleshootRDP 自動化來修改執行個體設定。
- 使用 Systems Manager Session Manager 或 aws:runPowerShellScript 命令。
- 手動離線變更登錄檔。
**注意:**變更 NLA 時,必須變更登錄檔。在開始之前,請先從您的執行個體建立 Amazon Machine Image (AMI)。這會在您變更登錄檔之前建立備份。
執行 AWSSupport-TroubleshootRDP 自動化
先決條件:
- 查看 RDP 設定、RDP 服務及 Windows 防火牆設定檔的變更。
- 確保目標 EC2 執行個體具有 AWS Identity and Access Management (IAM) 執行個體設定檔角色,並附加 AmazonSSMManagedInstanceCore Amazon 受管政策。
- 確認您目前的 IAM 使用者或角色具有所需的權限。如需更多資訊,請參閱 AWSSupport-TroubleshootRDP 的必要 IAM 權限一節。
注意: 如果您選擇 AllowOffline 選項,此執行手冊將呼叫 AWSSupport-ExecuteEC2Rescue 執行手冊以執行離線修復。若要啟動執行手冊,您必須附加 AmazonSSMAutomationRole IAM 受管政策。如需更多資訊,請參閱 AWSSupport-StartEC2RescueWorkflow。
若要執行 Systems Manager 執行手冊,請完成以下步驟:
- 開啟 Systems Manager console (Systems Manager 主控台)。
- 在導覽窗格中,選擇 Documents (文件)。
- 在搜尋列中,輸入 AWSSupport-TroubleshootRDP。
- 選取 AWSSupport-TroubleshootRDP 文件。
- 選擇 Execute automation (執行自動化)。
- 選擇 Execute (執行)。
自動化完成後,如需檢視詳細結果,請查看 Outputs (輸出) 區段。
使用 Systems Manager Session Manager
重要: 執行個體必須已安裝 Systems Manager Agent (SSM Agent),且必須處於線上狀態。執行個體還必須具有可授予 Session Manager 權限的 IAM 角色。如需詳細資訊,請參閱完成 Session Manager 先決條件。
若要使用 Session Manager 新增登錄檔金鑰並停用 NLA,請完成以下步驟:
- 開啟 Systems Manager console (Systems Manager 主控台)。
- 在導覽窗格中,選擇 Fleet Manager。
- 選取您要連線的受管執行個體。
- 在 Node actions (節點動作) 功能表中,選取 Start terminal session (啟動終端工作階段)。
- 在終端工作階段中執行下列命令:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 0 /freg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v fAllowSecProtocolNegotiation /t REG_DWORD /d 0 /f
使用 aws:runPowerShellscript 命令
**重要:**執行個體必須已安裝 SSM Agent,且執行個體必須上線。執行個體還必須具有可授予 Session Manager 權限的 IAM 角色。如需詳細資訊,請參閱完成 Session Manager 先決條件。
若要使用 aws:runPowerShellscript 命令文件新增登錄檔金鑰並停用 NLA,請完成以下步驟:
- 開啟 Systems Manager console (Systems Manager 主控台)。
- 在導覽窗格中,選擇 Run Command (執行命令),然後選擇 Run a Command (執行命令)。
在 Command document (命令文件),選擇 AWS-RunPowerShellScript。
在 Command parameters (命令參數) 中,輸入下列命令:
對於目標選擇,選擇手動選擇執行個體,然後選取您的執行個體。reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 0 /freg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v fAllowSecProtocolNegotiation /t REG_DWORD /d 0 /f - 選擇執行。
- 等待 Overall status (整體狀態) 變更為 Success (成功)。兩分鐘後重新整理頁面。
- 重新啟動執行個體。
- 使用 RDP 登入執行個體。
離線手動變更登錄檔
請完成下列步驟:
-
在與您所停止無法存取的執行個體相同的可用區域中啟動新執行個體。新的執行個體會變成您的救援執行個體。
**重要:**若要避免磁碟簽章問題,最佳做法是啟動與無法存取的執行個體不同的 Windows 執行個體。
-
將分離的磁碟區作為 /dev/xvdf 連接至救援執行個體。
-
使用 RDP 連線至救援執行個體,然後在磁碟管理員中將剛連接的磁碟區上線。
-
在命令提示字元中,輸入 regedit.exe,然後按 Enter 鍵開啟登錄編輯器。
-
選取 HKEY_LOCAL_MACHINE,選擇 File (檔案),然後選擇 Load Hive (載入 Hive)。
-
前往已連接磁碟區上的 Windows 資料夾,然後選取 SYSTEM 檔案。預設路徑為 D:\Windows\System32\config。
-
命名 SYSTEM 檔案。例如 badsys。
-
此時,badsys 系統檔案會出現在 HKEY_LOCAL_MACHINE 下。在 badsys 下,導覽至 ControlSet001、Control、Terminal Server、WinStations、RDP-Tcp。
-
連按兩下 SecurityLayer,並將其值資料設定為 0。
選取 UserAuthentication,並將其值資料設定為 0。
選取 fAllowSecProtocolNegotiation,並將其值資料設為 0。 -
選取 badsys,選擇 File (檔案),然後選擇 Unload Hive (卸載 Hive)。
-
卸載 Hive 後,開啟 Disk Manager (磁碟管理員) 並使磁碟離線。
-
從救援執行個體分離磁碟區,並將其作為根磁碟區 (/dev/sda1) 連接至無法存取的執行個體。
-
啟動執行個體並測試 RDP。
在 RDP 登入過程中,信任關係失敗
使用快取的使用者憑證登入無法存取的執行個體。
先決條件:
- 可成功向 EC2 執行個體進行驗證的本機帳戶。
- (選用) 在執行個體與網域控制器通訊時,至少有一個登入的網域帳戶。若要讓網域帳戶運作,必須在伺服器中快取網域帳戶憑證。
**注意:**最佳實務是使用本機帳戶。 - 如果網域控制器無法使用,請確認先前要快取的登入次數至少設定為 1。您必須執行此操作才能使用互動式登入。您可以將政策設定為預設值 10。預設情況下,該政策未定義,您可以使用伺服器的本機政策。
若要使用快取的使用者憑證登入,請完成下列步驟:
- 開啟 Amazon EC2 console (Amazon EC2 主控台)。
- 在導覽窗格中,選擇 Security Groups (安全群組)。
- 選擇 Create security group (建立安全群組)。
- 新增安全群組名稱和描述。
- 在 Inbound rules (傳入規則) 下,選擇 Add rule (新增規則)。
在 Type (類型) 中,選取 RDP。然後,輸入您要用來進行 RDP 連線的來源資訊。 - 在 Outbound rules (傳出規則) 下,移除所有傳出存取。
- 選擇 Create security group (建立安全群組)。
- 在導覽窗格中,選擇 Instances (執行個體),然後選取無法存取的執行個體。
- 選擇 Actions (動作),選取 Security (安全性),然後選擇 Change security groups (變更安全群組)。移除現有的安全群組,然後指派您剛建立的安全群組。
- 使用常規網域帳戶以使用 RDP 連線至 EC2 執行個體。因為您已移除 Amazon EC2 的傳出存取,RDP 會使用儲存在伺服器上的快取憑證。
**注意:**驗證最初會嘗試透過網域控制器進行。由於沒有來自 Amazon EC2 的傳出存取,因此驗證最終會檢查儲存在伺服器上的快取憑證。然後系統會使用快取的憑證重試驗證,且登入成功。登入之後,您可以將安全群組設定變更回原始狀態。然後繼續修正任何網域問題。
其他疑難排解
如果仍然無法連線至執行個體,請參閱如何對與 EC2 Windows 執行個體的 RDP 問題進行疑難排解?
相關資訊
AWS Systems Manager Session Manager
相關內容
- 已提問 2 年前
AWS 官方已更新 9 個月前
