Windows Server:識別並修復 Active Directory 網域控制站上損壞的安全通道
Summary: 本文說明如何識別 Active Directory 網域控制站 (DC) 上損壞的安全通道並修復。
Symptoms
- 受影響的 DC 與網域中的其他 DC 之間的複製失敗。失敗的原因可能有所不同,但「目標主體名稱不正確」是安全通道損壞的強烈指標。
- 與此錯誤關聯的結果代碼包括 -2146893022 和 0x80090322。這些代碼可能會出現在
repadmin目錄服務事件日誌中的輸出或事件。
- 與此錯誤關聯的結果代碼包括 -2146893022 和 0x80090322。這些代碼可能會出現在
- “此工作站與主域之間的信任關係失敗”是與損壞的安全通道關聯的另一個錯誤。
- 如果受影響的 DC 是 DNS 伺服器,則 DNS 管理員主控台在連接到該 DC 時可能會產生「拒絕存取」錯誤。
Cause
DC 自己的電腦帳戶密碼複本與 Active Directory (AD) 資料庫中儲存的對應密碼不匹配。當這些密碼不同時,無法建立安全通道。如需 AD 中電腦帳戶密碼的詳細資訊,請參閱下方的其他資訊 。
Resolution
可使用 Test-ComputerSecureChannel PowerShell 命令,搭配 -Repair 交換器可以修復 DC 上損壞的安全通道。(還有其他方法,但此命令簡單明瞭。在受影響的 DC 上執行這些步驟,以修復其安全通道:
- 如果網域中只有一個 DC,請略過此步驟。停止 Kerberos 金鑰發佈中心 (KDC) 服務,並將其啟動類型設為「已停用」。
可能還需要在域中的其他DC上執行此操作,但服務必須在至少一個DC上運行。請參閱下方 的其他資訊 。 - 啟動提升權限的 PowerShell 提示。
- 執行
klist purge以刪除現有的 Kerberos 工單。 - 執行
Test-ComputerSecureChannel -server <good_dc> -repair -verbose。
將 good_dc> 替換為<運行 KDC 服務的 DC 的名稱或 IP 位址。 - 命令的輸出應指出安全通道已成功修復:
圖 1:安全通道已成功修復。 - 強制在受影響的 DC 之間來回進行 AD 複寫,並確認其成功。
- 在所有DC上將 KDC 服務的啟動類型重置為 「自動 」,然後啟動該服務。(換句話說,撤銷步驟 1 中執行的操作。
Additional Information
Active Directory 中的電腦帳戶密碼
每台加入域的計算機在AD資料庫中都有一個計算機帳戶。與用戶帳戶一樣,這些計算機帳戶具有與之關聯的密碼。這些密碼用於在域中的設備之間建立安全通信路徑( 安全通道)。每台計算機在本地存儲其密碼的副本,另一個副本存儲在AD資料庫中。電腦帳戶密碼不會過期,也不需要使用者手動維護。他們不受為用戶帳戶密碼建立的密碼策略的約束。
默認情況下,加入域的計算機嘗試每 30 天更改一次密碼,但可以更改此間隔。密碼更改由加入域的計算機啟動,而不是由AD中的機制啟動。如果可以聯繫 DC,則電腦的密碼本地副本和存儲在 AD 中的副本都將更改。如果機器無法聯繫 DC,則不會更改其密碼的本地副本。
這些原則適用於DC,就像它們適用於其他已加入域的計算機一樣。DC 的電腦帳戶密碼的本地副本可能與存儲在 AD 中的副本不同步。這在單直流域中甚至是可能的,儘管很少見。
停止 Kerberos 金鑰發佈中心 (KDC) 服務
如果域中有多個DC,則必須在受影響的DC上停止KDC服務。還建議將服務的啟動類型設置為「已禁用」,以防止服務啟動。根據問題的範圍和域中DC的數量,可能還需要在其他DC上停止該服務。如果域中的所有其他DC彼此同步(複製時沒有錯誤),請僅在受影響的DC上停止並禁用該服務。否則,請在無法複製的 DC 上停止並停用此功能。它必須在至少一個 DC 上保持執行。如果可能,在所有 DC 上停止服務,除了一個 DC 之外,並將該 DC 指定為 -server 步驟 4 中的切換應會產生良好的結果。