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

Nic*_*DIA 7 ssh port-forwarding linux-networking vagrant tunnel

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

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

ssh -N -L 3306:127.0.0.1:3306 sshuser@192.168.10.10
Run Code Online (Sandbox Code Playgroud)

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

所以知道了,我有几个问题:

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

  • 如果是这样,我该怎么做才能保持性能而不在控制台中以“sshuser”的身份登录?

  • 我可以使用它们来加快加密速度吗?

预先感谢您的光。

Zor*_*che 8

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

如果您希望在同一网络上的两台主机之间建立安全的永久连接,那么调查设置 IPSEC 所需的条件几乎肯定会好得多。或者,如果 IPSEC 对您不起作用,请使用不通过 TCP 传输的 VPN 设置。

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

  • 正常的 SSH 端口隧道不是 TCP over TCP。您链接到的文章明确提到了 SSH 上的 PPP,这是完全不同的事情。 (3认同)

Tho*_*mBR 1

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

如果您使用-N,ssh 仅创建隧道,而不是另一侧的 shell 和所有环境变量。速度快多了。

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

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

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

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

  • 抱歉,你是说 SSH 加密没用吗???我实在看不出攻击者如何利用 SSH 隧道(除了通过暴力搜索,这是不太可能的)。无论如何,你如何解释删除“-N”选项可以防止我的性能损失。 (5认同)