使用 NTLM 时我们可以拥有链接服务器吗?

使用 NTLM 时我们可以拥有链接服务器吗?

我无权访问 Active Directory 设置,也没有权限更改链接服务器上的任何内容。

从我读过的所有内容来看,这似乎意味着我无法使用 Kerberos - 这是一个大问题,因为我不知道如何在没有它的情况下使用链接服务器。

有没有办法可以在没有 Kerberos 的情况下连接到链接服务器?(或者在 AD 中无需管理员即可启用 Kerberos 的某种方法?)


确切的问题描述

当我连接到链接服务器时坐在我的服务器前,它工作正常;但是当我尝试连接到链接服务器时从任何其他计算机(通过我的服务器委托),它给出错误:

用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。(Microsoft SQL Server,错误:18456)

看来这就是“双跳问题”,通常的解决方案是启用 Kerberos,这需要访问 AD 和链接服务器。

当我将安全性设置为“时,我遇到了同样的错误使用登录的当前安全上下文进行” 我不能使用“使用此安全上下文进行“因为这似乎使用 SQL 身份验证(链接服务器上未启用)而不是 NTLM

答案1

这确实是一个受约束的委派(即“双跳”)。您无法更改任何设置来使其正常工作。如果存在这样的设置,那么从定义上讲,它就是一个错误,因为它会破坏域策略,即仅将委派限制到受信任的帐户。因此,除非您进行 AD 更改以将“中间”的 SQL Server 标记为受信任的委派,否则您将无法成功进行双跳。我给您的任何其他解决方法都会让我处于帮助您违反域策略的位置。既然您似乎了解技术问题,我建议您敲正确的门:域的主人和/或您的要求的利益相关者。

答案2

您可以使用 sp_addlinkedsrvlogin 将主机 SQL Server 上的 Windows 登录名映射到远程服务器上的 SQL 登录名。此功能不适用于 Windows 组。

答案3

在链接服务器对话框中,在安全部分,您​​是否选择了“使用登录的当前安全上下文进行操作”?

您尝试连接的服务器上是否设置了 Windows 帐户?

答案4

要使用没有 kerberos 的链接服务器,唯一的选择是 SQL 登录。如果那不是一个选项,你应该真正尝试修复 kerberos 身份验证。

您必须弄清楚哪个帐户运行 SQL Server 服务。如果它是一个域帐户,您应该请某人为该用户注册 SPN。

如果您可以使用域用户访问域上的任何 Windows 2008 服务器,则应运行此 CMD 命令来检查已注册的内容(允许读取访问)。

setspn -l [sqlservicedomainaccount]

您应该检查 setspn -l sqlmachinename 并查看它是否已注册,以及 sqlserviceaccount。由于这些注册表不应该有重复的项目,因此您需要先删除并注册新的注册表。

然后要求网络中的某人注册此 spn(因为注册后需要重新启动服务,所以您应该只在时间窗口内进行此操作)

相关内容