你的位置:首页 > 操作系统

[操作系统]解决服务器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-US2015/12/17 12:23  <DIR>     Panther2009/07/14 09:39      128,512 sysprep.exe2010/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 )。