SSH 隧道(端口转发)严重减慢了我的 mysql 查询速度

SSH 隧道(端口转发)严重减慢了我的 mysql 查询速度

我目前正在使用 vagrant (virtual box) 测试一些配置,以便通过 SSH 隧道将 2 个服务器 (当前为 VM) 连接在一起。目标是将我的 Web 应用程序安全地连接到数据库。

问题是,当我通过 SSH 隧道查询数据库时,我的查询速度比不使用隧道时慢 5 到 80 倍。这是我使用的命令:

ssh -N -L 3306:127.0.0.1:3306 [email protected]

从我读到的内容来看,开销应该不会那么多,所以我尝试了一些方法来加快传输速度。我发现,如果我删除该-N选项,查询速度会和不使用隧道一样快,但我以“sshuser”身份登录终端(&在命令末尾添加一个会产生奇怪的效果……)。

因此,我有几个问题:

  • 当我删除该选项时,我的数据是否仍然加密-N

  • 如果是这样,我该怎么做才能保持性能而不在控制台中被记录为“sshuser”?

  • 有什么选项可以使加密速度更快吗?

提前感谢您的启发。

答案1

SSH 隧道并不是一个好主意,无法作为永久解决方案。SSH 是基于 TCP 的。大多数可以在 SSH 中建立隧道的东西都是基于 TCP 的(包括 mysql)。隧道TCP 之上的 TCP可能会影响性能。因为你的系统会尝试同时处理两个连接上的退避等问题。

如果您希望在同一网络上的两个主机之间建立安全的永久连接,那么最好调查一下设置 IPSEC 需要什么。或者,如果 IPSEC 对您不起作用,请使用不通过 TCP 传输的 VPN 设置。

至于 SSH 隧道的性能,我会查看您使用的密码。有些比其他的快。也许您可以接受更快/更弱的密码。您几乎可能想要验证压缩是否已禁用。如果您使用的是快速链接,则实际上没有任何压缩的价值,但它可能会增加执行压缩/解压缩的延迟。如果在更改这些之后仍然没有得到任何改进,您可能需要启动 tcpdump/wireshark 并查看是否可以看到延迟来自何处。

答案2

-N选项仅阻止 SSH 执行远程命令,而不是加密。无论如何,您的隧道仍将被加密。

如果您使用-N,ssh 只会创建隧道,而不是另一端的 shell 和所有环境变量。这样速度更快。

我认为在您的设置中添加 SSH 隧道不会提高您的安全性,甚至可能会大大降低安全性。

如果您将 Web 应用程序直接连接到数据库,任何潜在攻击者都只能获得应用程序使用的凭据。如果您创建隧道,攻击者可能会利用该隧道访问数据库主机,并窃取该服务器上的所有数据。

在您的设置中,您必须手动启动隧道,最终可能会自动启动隧道,并以某种方式存储凭据。攻击者可以找到凭据并使用它来访问数据库服务器。

如果您的数据库服务器和应用程序服务器位于同一子网中,则使用加密的 SSH 隧道访问数据的安全增益可以忽略不计。它只能保护您免受已经在网络内的攻击者的侵害。在这种情况下,攻击者访问所有内容只是时间问题。

相关内容