1. 程式人生 > 其它 >解決伺服器SID引起虛擬機器不能加入AD域使用者,無法遠端登入的問題

解決伺服器SID引起虛擬機器不能加入AD域使用者,無法遠端登入的問題

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

新增域賬戶

在域使用者裡面新增一個使用者,如下圖:

(圖1)

將使用者新增到“開發組”中去,然後讓該使用者在另外一臺伺服器遠端登入:

(圖2)

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

(圖3)

選擇Administrators組,點選新增按鈕,選擇一個域使用者,然後新增,最好確定。 用該域使用者登入,結果還是前面的介面,無法登入。 再次回到遠端伺服器上,開啟Administrators組,發現之前新增的域使用者沒有新增進去。 重複上面的操作,問題依舊,並且域使用者無法新增到本地任何使用者組。

去群裡面諮詢有關大牛,給了各種連結,有人說是本地安全策略問題,有人說是防火牆設定,也有人說是域控制器設定問題。 將前面的域使用者加入 Active Domain Admins組,然後再去遠端伺服器登入,問題依舊。

(圖4)

 SID衝突

最後,找到原來公司的運維同事諮詢,他告訴我,可能是SID衝突,原因是上面圖片中域使用者名稱後面的一串字串:

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

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

C:UsersAdministrator>whoami /user

使用者資訊
----------------

使用者名稱            SID
================= =============================================
dxnadministrator 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:UsersAdministrator>cd 

C:>dir c:windowssystem32sysprep
 驅動器 C 中的卷沒有標籤。
 卷的序列號是 B0D1-4221

 c:windowssystem32sysprep 的目錄

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:windowssystem32sysprepsysprep.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.

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