解決服務器SID引起虛擬機不能加入AD域用戶,無法遠程登錄的問題


最近在公司搭建AD域控制器,發現無法在計算機真正添加域用戶,也就是添加的用戶雖然可以在本地登錄,但是無法遠程登錄,嘗試多種方法都無法解決,而最終原因居然是虛擬機導致的服務器的SID沖突。本文記錄下該問題的發生原因和解決過程。

添加域賬戶

在域用戶里面添加一個用戶,如下圖:

(圖1)

將用戶添加到“開發組”中去,然后讓該用戶在另外一台服務器遠程登錄:

(圖2)

無法登錄,甚至使用域管理員,也無法登錄,看來必須去遠程服務器上增加一個域用戶到本地用戶組上面去:

(圖3)

選擇Administrators組,點擊添加按鈕,選擇一個域用戶,然后添加,最好確定。
用該域用戶登錄,結果還是前面的界面,無法登錄。
再次回到遠程服務器上,打開Administrators組,發現之前添加的域用戶沒有添加進去。
重復上面的操作,問題依舊,並且域用戶無法添加到本地任何用戶組。

去群里面咨詢有關大牛,給了各種鏈接,有人說是本地安全策略問題,有人說是防火牆設置,也有人說是域控制器設置問題。
將前面的域用戶加入 Active Domain Admins組,然后再去遠程服務器登錄,問題依舊。

(圖4)

 SID沖突

最后,找到原來公司的運維同事咨詢,他告訴我,可能是SID沖突,原因是上面圖片中域用戶名后面的一串字符串:

 S-1-5-21-2625116194-3287851518-1169719709-500

在命令行,輸入下面的命令:

C:\Users\Administrator>whoami /user

用戶信息
----------------

用戶名            SID
================= =============================================
dxn\administrator S-1-5-21-2625116194-3287851518-1169719709-500

在域控制器服務器上,同樣輸入上面的命令,顯示的SID值果然跟遠程服務器是一樣的。
看來同事說的問題是真的。


那么,《什么是SID》呢?

搜索了下,找到如下解釋:


SID 只是安全標識符的縮寫而已。SID 的全稱是“安全標識符(Security Identify)”,是為域或本地計算機中創建的每個帳戶分配的唯一 ID 字符串(例如,S-1-5-21-1454471165-1004336348-1606980848-5555)。

Active Directory活動目錄域中每一個對象也有一個唯一標識,成為GUID。GUID=SID + RID 。活動目錄中專門有一個操作主機角色叫RID,就是為域中的每個對象分配一個RID號。最終GUID在所有域,乃至全世界都是唯一的。
實際上,計算機使用 SID 來跟蹤每個帳戶: 如果重命名管理員帳戶,計算機仍然知道哪個帳戶是管理員帳戶。 這是因為 SID 不同於名稱,它永遠不會更改。

計算機賬戶為了更高級別的安全性要求,會與一些計算機硬件信息相關聯。由於活動目錄數據庫已經不再信任計算機賬戶,認為這個計算機賬戶是不安全的,所謂的安全通道 security channel被破壞。


這就是前面為何在遠程服務器添加域用戶不成功的原因。

配置SID

SID重復的原因是怎么回事呢?

這往往是系統通過克隆安裝,或者復制的虛擬機的原因,這些方式盡管安裝部署系統快速,但卻造成了現在的問題。解決方式,就是重新配置系統,生成新的SID。可以采用下面的命令:

C:\Users\Administrator>cd \

C:\>dir c:\windows\system32\sysprep
 驅動器 C 中的卷沒有標簽。
 卷的序列號是 B0D1-4221

 c:\windows\system32\sysprep 的目錄

2010/11/22  02:52    <DIR>          .
2010/11/22  02:52    <DIR>          ..
2010/11/22  02:52    <DIR>          en-US
2015/12/17  12:23    <DIR>          Panther
2009/07/14  09:39           128,512 sysprep.exe
2010/11/22  02:52    <DIR>          zh-CN
               1 個文件        128,512 字節
               5 個目錄 91,940,900,864 可用字節

c:\windows\system32\sysprep\sysprep.exe

然后,出現下面的配置程序界面:

(圖5)

 

運行sysprep.exe程序以后,系統參數全部很多都重新設置了,包括IP配置信息,系統重啟后,服務器的IP將變成自動獲取的,並且服務器的名字也修改了,所以如果你不能在現場操作服務器,或者你沒有虛擬機的管理員權限,千萬不要運行sysprep.exe程序。

(圖6)

經過稍長時間的配置,重新進入系統,將當前服務器加入域,然后配置域用戶登錄權限了,也就是上面的(圖3),不會在域用戶名后面跟一長串SID字符了。經過這樣的配置后,域用戶終於可以遠程登錄服務器了。

最后,感謝你的支持看完本文(數據開發利器-SOD開源框架 http://pwmis.codeplex.com )。

 

配置失敗的問題

在有些系統上,按照上面的方式失敗的可能性比較高,目前測試“數據中心版” 按照上面的方式是成功的,企業版,專業版都是失敗的,系統重啟后,系統出現下面的界面:

 

按照提示,修復計算機,或者按F8進入安全模式,都有可能失敗。

因此,修改SID之前,請一定先備份一個系統快照,如果出問題,請恢復快照,然后嘗試下面的方法。

 

使用 SIDCHG64 修改SID

可以下載這個附件工具,SIDCHG64表示該程序用於64位系統,下面這篇文章有介紹:

http://www.stratesave.com/html/sidchg.html

SIDCHG (SIDCHG64 on 64-bit Windows) 2.0f is a command-line utility to modify local computer SID and computer name, for Windows 10/8.1/2012 R2/8/2012/7/2008 R2/2008/Vista/2003/XP. It replaces current computer SID with new random SID. In addition, it changes the WSUS ID for Windows Updates, the MachineGuid, the Device Identifier for modern Windows apps, and the encryption state to preserve encrypted files, Windows Action Center settings, Certificates and other encrypted stored information.

注意,需要在(管理員)命令提示行里面執行此程序,執行后重新啟動系統。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM