通过 Linux 服务器在 Windows 之间为 SQL 服务器建立隧道,可以吗?

通过 Linux 服务器在 Windows 之间为 SQL 服务器建立隧道,可以吗?

有时候我需要检查另一个位置的 MS SQL Server 中的一些数据。
目前,这需要进行数据库备份,将其移动到另一台服务器,以便我可以下载文件.bak并在本地计算机上恢复。但数据库正在增长,所以这开始变得麻烦。

Win 7 -> Linux -> Windows Server 2008 with SQL Server是否有可能(以及如何)为 MS SQL Management Studio建立隧道?
Linux 和 Windows Server 位于另一个位置的同一网络上。只有 Linux 服务器在外部可见。

不幸的是,我无法在任何机器上进行任何更改。
我尝试通过 Putty 使用 SSH 隧道,但失败了。

答案1

在win7机器上,打开putty,对linux ssh会话进行如下设置:连接->SSH->隧道->源端口:1433,目标:192.168.0.3:1433,选择本地单选按钮。

现在您应该能够从 win7 机器连接到 localhost:1433。

答案2

是的,应该可以。看看这里例如。如果您需要帮助设置隧道,则需要提供更多信息。

答案3

嗯,如果你可以为 Linux 服务器的 iptables 添加新规则,那么你可以通过简单的端口转发来实现这一点。但请注意,这非常危险,因为你将使你的数据库在互联网上可见。当然,只有当你需要连接到数据库服务器并使用一些非标准端口时,你才能启用端口转发。这是你必须在 Linux 机器上的 iptables 中放入的规则:


-A PREROUTING -p tcp -m tcp -s IPOFYOURNETWORK --dport PORTNUMBER1 -j DNAT --to-destination IPOFDATASERVER:PORTNUMER2
-A POSTROUTING -d IPOFDATASERVER -j MASQUERADE

IPOFYOURNETWORK 是您将尝试连接的网络或计算机的 IP

PORTNUMBER1 是您希望数据库可见的端口(您可以设置一些非标准端口)

IPOFDATASERVER:PORTNUMER2 这是您的数据库服务器的 IP 和端口。

答案4

按照 FINESEC 的评论,您可能会收到“连接主动拒绝”错误。

我设法通过在 Tunnels 下的 Putty 中选中“本地端口接受来自其他主机的连接”和“远程端口执行相同操作”复选框来解决这个问题。如果有人觉得这有用的话。

相关内容