解决服务器SID引发虚拟机不能加入AD域用户,没法远程登陆的问题

最近在公司搭建AD域控制器,发现没法在计算机真正添加域用户,也就是添加的用户虽然能够在本地登陆,可是没法远程登陆,尝试多种方法都没法解决,而最终缘由竟然是虚拟机致使的服务器的SID冲突。本文记录下该问题的发生缘由和解决过程。html

添加域帐户

在域用户里面添加一个用户,以下图:数据库

(图1)windows

将用户添加到“开发组”中去,而后让该用户在另一台服务器远程登陆:安全

(图2)服务器

没法登陆,甚至使用域管理员,也没法登陆,看来必须去远程服务器上增长一个域用户到本地用户组上面去:app

(图3)框架

选择Administrators组,点击添加按钮,选择一个域用户,而后添加,最好肯定。
用该域用户登陆,结果仍是前面的界面,没法登陆。
再次回到远程服务器上,打开Administrators组,发现以前添加的域用户没有添加进去。
重复上面的操做,问题依旧,而且域用户没法添加到本地任何用户组。运维

去群里面咨询有关大牛,给了各类连接,有人说是本地安全策略问题,有人说是防火墙设置,也有人说是域控制器设置问题。
将前面的域用户加入 Active Domain Admins组,而后再去远程服务器登陆,问题依旧。dom

(图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.

注意,须要在(管理员)命令提示行里面执行此程序,执行后从新启动系统。

相关文章
相关标签/搜索