通过SSH隧道访问SQL Server

时间:2011-08-02 16:39:02

标签: sql-server ssh ssh-tunnel

在我的开发商店中,我们在位于远程网络上的虚拟服务器上部署代码。

我们首先打开与网关服务器的SSH连接,然后通过本地端口通过SSH隧道传输RDP来访问该网络上的计算机。

我非常希望能够以相同的方式本地访问在这些服务器上运行的SQL Server实例。

我已设置本地端口(3398)以重定向到远程实例上的SQL Server端口(L3398 - > remote.machine.com:1433)。

然后我可以通过telnet到localhost 3398来实际测试连接,并且我得到一个连接:屏幕清除,我可以在一些监听过程中键入字符。

但是当我尝试将SSMS连接到localhost:3398时,它超时然后声称没有SQL Server正在侦听该端口:

Cannot connect to localhost:3398

Additional information:
A network-related or instance-specific error occurred while establishing a connection 
to SQL Server. The server was not found or was not accessible. Verify that the
instance name is correct and that SQL Server is configured to allow remote
connections. (...)

我确信服务器接受远程连接,因为我已经通过RDP远程连接到远程连接到远程网络中的其他计算机。

我已经用Google搜索知道这是可能的;有没有人知道为什么这不起作用,或者我可能做什么来诊断并希望解决问题?

谢谢!

4 个答案:

答案 0 :(得分:17)

而不是连接到localhost:3398 使用127.0.0.1,3398

答案 1 :(得分:0)

问题可能是SSMS正在尝试访问SQL Server Browser服务,即UDP端口1434.请查看http://technet.microsoft.com/en-us/library/cc646023.aspx,了解您可能需要转发的其他端口的概述工作

答案 2 :(得分:0)

我很确定我实际上找到了答案。

在远程网络(我们无法控制)上,出于安全考虑,似乎数据库服务器设置为忽略来自网关机器的数据库请求。所以我想没有好的解决方案,只能说服他们给我们完整的VPN访问权限。谢谢大家的帮助。

答案 3 :(得分:0)

对于身份验证类型Azure Active Directory - Universal with MFA(多因素身份验证),除了正确指定端口(127.0.0.1,3398)外,我还必须将主机指向localhost

在Windows上,我必须编辑hosts文件以包含服务器主机:

127.0.0.1    server.example.com

然后,在SSMS中,我可以连接到server.example.com,3398,它将正确执行MFA。

我也可以在更高的DNS级别上执行此重定向。