这是疯狂的,所以请耐心等待。这不是错误的密码。
我有一个无法进行身份验证的 SQL 服务帐户。我是一名经验丰富的服务器人员,曾与几位知识渊博的同事(即使他们是思科的)尝试过所有基本操作。
设想:
- 3 个站点上的 Active Directory,每个站点有 2 个 DC,Server 2008 R2 上有 1 个根 DC
- 没有 DNS 问题,站点复制准确无误。任何帐户更改都在几秒钟内完成。
- 新建的 SQL 2016 R2 部署到域中的 2 台 Server 2012 R2 服务器,这些服务器位于 Server 2008 R2 上的 SQL 2005 所在的 OU 中。
- 所有 SQL 服务器都在其自己的 VLAN 上,DC 在另一个 VLAN 上。虽然两者之间没有防火墙问题,但我们看不到任何日志,因为它们是托管在 ESX 群集上的第三方,VLAN 之间有 Cisco 合同。
- SQL 2005 服务器与其他 VLAN 上的 DC 进行身份验证时没有问题。
由于错误 1069:由于登录失败,服务未启动,因此在新 SQL 服务器上设置已建立的 AD SQL 服务帐户失败。
DC 上的事件日志中的事件(无论哪个 DC 正在验证帐户)表明以下内容:
Kerberos 预身份验证失败。帐户信息:安全 ID:DOMAIN\sqlsvcaccount$ 帐户名称:sqlsvcaccount$(不是真实帐户名称)服务信息:服务名称:krbtgt/DOMAIN(当然不是我们的域名)网络信息:客户端地址:::ffff:10.30.xx(我们的 IPv4 地址)客户端端口:49464 附加信息:票证选项:0x40810010 失败代码:0x18 预身份验证类型:2
证书信息:证书颁发者名称:
证书序列号:
证书指纹:
现在 0x18 通常是一个坏密码,但如上所述,帐户没有问题,当它们被禁用时,我会重新启用它们,重置密码等等。我可以在新的 SQL 服务器上对应用程序执行 RunAs,这很好。
我已经设置了计算机组策略以允许服务帐户的服务权限等,并运行了 gpresult 来确认已应用 GPO。
备份文件和目录 DOMAIN\sqlsvcaccount$ 作为批处理作业登录 DOMAIN\sqlsvcaccount$ 作为服务登录 DOMAIN\sqlsvcaccount$
甚至有一个受限制的计算机 GPO,并将域帐户设为本地管理员(这将消除对服务 GPO 的需要)。
为服务帐户创建了一个新的用户 OU,并阻止继承,然后将服务帐户移到那里,再次运行 gpupdate /force 并再次运行 gpresult 到 html,一切看起来都正常。
中间还会重新启动几次,这是常见的事情。
我们运行了 Wireshark,它从未显示任何错误,将 SQL 服务器移到与 DC 相同的 vlan 上,并且如前所述,DB vlan 上的 SQL 2005 服务器在身份验证方面没有任何问题。
最后,创建了一个新的计算机 OU,阻止策略继承并再次尝试所有这些,但尝试启动 SQL Server 或代理服务仍然没有成功。
我已经尝试使用 SQL 管理工具来编辑服务,甚至只是 Windows Services.msc。
我们最后开始研究的是密码,以及 Server 2012 是否尝试使用 RC4 进行身份验证并禁用密码。但目前还没有做太多这方面的工作。
那么有谁知道发生了什么吗?非常感谢任何反馈或我可以尝试的其他途径。
那里有一箱虚拟的啤酒,有谁知道答案吗?
答案1
托管服务帐户(MSA) 解决了这个问题。Server 2012 AD 使用 gMSA,因此这让我有点困惑:
在 Novacroft 下的 AD(具有高级选项)中,有一个名为托管服务帐户的 OU。使用 Powershell 创建后,您可以在那里找到您创建的 MSA。
因此,要安装服务帐户:
- 您使用 Powershell 创建帐户(不带 $)。
- 然后将帐户关联到服务器 - 再次使用 Powershell。
- 在目标服务器上,在功能和 AD 工具下安装 Powershell 和 AD 模块。还要安装 .NET 3.5
- 在 Powershell 中的目标服务器上,将账户导入到主机。
- 然后设置服务(现在需要在末尾添加 $),并将密码留空。
简单又好用(如果你知道怎么做的话)?感谢 NedPyle [MSFT] 全文这里 我希望这可以帮助别人 :-)