最近在公司搭建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.

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

解决服务器SID引起虚拟机不能加入AD域用户,无法远程登录的问题的更多相关文章

  1. AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...

  2. SharePoint 2013中修改windows 活动目录(AD)域用户密码的WebPart(免费下载)

    前段时间工作很忙,好久没更新博客了,趁国庆休假期间,整理了两个之前积累很实用的企业集成组件,并在真正的大型项目中经受住了考验:.Net版SAP RFC适配器组件和SharePoint 2013修改AD ...

  3. Java利用jcifs集成AD域用户认证

    近期一段时间发现AD这东西老火了,尤其是涉及到安全这一方面的,所以AD域用户认证成了如今网络安全方面的产品必备!这里就简单的分享一下,Java通过jcifs集成AD域用户实现认证,以实现网络安全! 我 ...

  4. python-ldap修改AD域用户密码(CA+SSL)

    代码连接:https://github.com/raykuan/ldap-notes 使用python的ldap模块连接AD服务器,有两种方式: 非加密:con = ldap.initialize(' ...

  5. AD 域服务简介(二)- Java 获取 AD 域用户

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...

  6. gitlab用户登录与AD域用户集成

    ---恢复内容开始--- 编辑gitlab.rb文件 sudo vi /etc/gitlab/gitlab.rb 下图是我编辑的内容示例(仅供参考): 编辑以下内容: gitlab_rails['ld ...

  7. JAVA 通过LDAP获取AD域用户及组织信息

    因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...

  8. SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)

    由于SharePoint 2013推出不久,并非所有的企业都会升级到SharePoint 2013的,毕竟升级不是打打补丁这么简单,更多的企业还是使用Sharepoint 2010版本的,因此本人自行 ...

  9. java修改AD域用户密码使用SSL连接方式

    正常情况下,JAVA修改AD域用户属性,只能修改一些普通属性, 如果要修改AD域用户密码和userAccountControl属性就得使用SSL连接的方式修改, SSL连接的方式需要操作以下步骤: 1 ...

随机推荐

  1. jquery-懒加载插件

    在Web应用程序中,系统的瓶颈常在于系统的响应速度.如果系统响应速度过慢,用户就会出现埋怨情绪, 系统的价值也因此会大打折扣.因此,提高系统响应速度,是非常重要的. 从此可知,再好的网站,再炫的网站, ...

  2. 【Win 10 应用开发】RTM版的UAP项目解剖

    Windows 10 发布后,其实SDK也偷偷地在VS的自定义安装列表中出现了,今天开发人员中心也更新了下载.正式版的SDK在API结构上和以前预览的时候是一样的,只是版本变成10240罢了,所以大家 ...

  3. 轻量级前端MVVM框架avalon - 执行流程2

    接上一章 执行流程1 在这一大堆扫描绑定方法中应该会哪些实现? 首先我们看avalon能帮你做什么? 数据填充,比如表单的一些初始值,切换卡的各个面板的内容({{xxx}},{{xxx|html}}, ...

  4. PHP浅复制与深复制

    原文链接:http://www.orlion.ga/731/ php用clone复制对象有一个问题,下面用代码来说明问题: class Foo{ public $bar; public $name; ...

  5. 楼主,可否发一份代码给我!QQ....

    一般来说,但凡博主写一篇很赞的文章,然后贴上演示demo的图片或者结果之后,下面一定有一大堆要代码的.不论你在博客中,把算法讲得多么透彻清晰,各种流程图伪代码一清二楚:也不论你提出了任何漂亮的思路和设 ...

  6. T-SQL:毕业生出门需知系列(五)

    第5课 高级数据过滤 5.1 组合 WHERE 子句 第4课介绍的 WHERE 子句在过滤数据时都是用单一的条件. 5.1.1 AND 操作符 检索由供应商 DLL01 制造且价格小于等于 4 美元的 ...

  7. Objective-C中的Block(闭包)

    学习OC有接触到一个新词Block(个人感觉又是一个牛气冲天的词),但不是新的概念,不是新的东西.学过Javascript的小伙伴对闭包应该不陌生吧~学过PHP的应该也不陌生,在PHP5.3版本以后也 ...

  8. 好玩的SQL

    1. 做一个3*3的加法表 SQL), (); A||'+'||B||'='||(A+B) ------------------------------------------------------ ...

  9. C语言 第五章 循环结构

    一.for 请在屏幕上输出1000个*号 printf("*************************...."); #include "stdio.h" ...

  10. Oracle 11g 编译使用BBED

    环境:RHEL 6.4 + Oracle 11.2.0.4 1. 拷贝缺失文件 2. 编译BBED 3. BBED使用测试 Reference 1. 拷贝缺失文件 11g中缺失几个相关文件,但我们实际 ...