尝试从远程服务器连接 SQL 时出现以下错误。本地登录工作正常。任何人都可以帮助解决这个问题。提前致谢。
“登录失败。登录来自不受信任的域,不能用于 Windows 身份验证。[客户端:10.186.12.10]”
我的环境:
客户端 - 已测试加入的 AD/DNS 域
远程 SQL Server - 已加入 prod AD/DNS 域
我在测试 AD/DNS 服务器隔离环境中运行。测试 AD/DNS 服务器和 prod AD/DNS 服务器之间没有关系。测试域名:contoso.com 否则,PROD 域名:contoso.com
测试 AD/DNS 服务器:10.190.10.1 产品 AD/DNS 服务器:10.150.10.1
我是否也必须加入 prod AD/DNS 客户端计算机?我的意思是,有任何解决方法吗?
提前致谢,
最后更新:
解决了我的问题。
我认为问题是客户端计算机的域在通过SSMS中的Windows 身份验证登录时不受远程服务器的信任。通过将身份验证模式从Windows 身份验证切换到Azure Active Directory - 密码,您仍然应该能够使用本地SSMS客户端的AD凭据登录。
如果您遇到后续错误“证书链是由不受信任的机构颁发的”,那么您可以通过单击登录窗口上的“选项”按钮手动告诉SSMS信任它。然后在“连接属性”选项卡下,选中“信任服务器证书”复选框。然后单击“连接”按钮。
截图示例
如果您只是使用 SSMS,那么您可以通过 CMD 使用远程域凭据启动它,更新您的 SSMS 安装路径
或者您可以在 Windows 凭据管理器中输入凭据(可以通过 UI 或 CMD 完成)
当客户端尝试连接时,它将传递其现有的 Kerberos 票证,即用户登录时在测试 AD 上从其域控制器创建的票证。
SQL Server 会将票证传递给它自己的 DC,这会使它失败。由于 Production 域与 Test 域没有信任关系,因此 DC 无法信任此票证所代表的内容。
要在不在域之间移动机器的情况下使其工作,您需要在两个 AD 域之间建立信任关系。然后,生产 DC 可以与其他 DC 验证票证。
建立信任的方法有很多。重要的是,它们可以是单向的,因此您不必让两个域相互信任。您还可以设置森林信任,这样更易于管理。
两个 DC 需要能够相互通信,因此您可能需要打开端口并设置 DNS 记录。
我建议您与您的系统管理员或运行您的 AD 域的任何人交谈,如果有的话。