我们有一个独立的 SQL 服务器 [Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)],我们想使用 kerberos 身份验证,以便通过链接服务器查询其他数据库。我们已将 MSSQL 实例设置为使用 AD 服务帐户运行,并为该帐户提供对实例用于连接加密的 SSL 证书的私钥的访问权限。
重新启动后,我在 ERRORLOG 中看到 MSSQL 能够注册适当的 SPN:
Server The SQL Server Network Interface library successfully registered the Service Principal Name (SPN) [ MSSQLSvc/mssql-server.example.org ] for the SQL Server service.
Server The SQL Server Network Interface library successfully registered the Service Principal Name (SPN) [ MSSQLSvc/mssql-server.example.org:1433 ] for the SQL Server service.
但是,当从与服务器加入同一域的远程 Windows 10 计算机连接时,使用 SSMS [v18.9.2] 中的 Windows 身份验证,然后检查auth_scheme
我看到:
/*------------------------
SELECT net_transport, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID;
------------------------*/
net_transport auth_scheme
---------------------------------------- ----------------------------------------
TCP NTLM
(1 row affected)
查看我在网上找到的文档,我相信我已经完成了完成这项工作所需的一切。有什么我错过的想法吗?
我一直在另一台远程机器上尝试这个,并注意到它正确使用了 Kerberos,没有任何问题。深入挖掘,似乎有一些与此服务器相关的 DNS 更改,我推测这可能导致/影响了这一点。回到通过 NTLM 连接的原始远程计算机上,我运行
ipconfig /flushdns
,重新启动 SSMS,然后使用 Kerberos 成功连接。