我目前正在testing一些configurationvagrant(虚拟箱)连接2个服务器(当前虚拟机)一起扔SSH隧道。 目标是安全地将我的Web应用程序连接到数据库。
问题是,当我查询数据库抛出一个SSH隧道时,我的查询是5到80倍慢,如果我不使用隧道。 这是我正在使用的命令:
ssh -N -L 3306:127.0.0.1:3306 [email protected]
从我读的东西看,开销不应该太大,所以我试了一些东西来加速转会。 我发现,如果我删除-N选项,查询速度相当快,如果我不使用隧道,但我在terminallogin为'sshuser'(并添加&在命令做奇怪的事情…)。
所以知道,我有几个问题:
当我删除-N选项时,我的数据是否仍然被encryption?
如果是这样,我可以做什么来保持性能而不会在控制台中logging为'sshuser'?
他们有什么select我可以用来加快encryption?
预先感谢您的光明。
作为一个永久的解决scheme,SSH隧道并不是一个好主意。 SSH是基于TCP的。 你可以在SSH中隧道的大部分东西都是基于TCP的(包括mysql)。 TCP上的TCP隧道可能会影响性能。 因为你的系统将尝试同时处理两个连接上的退避等。
如果你想在同一个networking上的两台主机之间build立一个安全的永久连接,你几乎可以更好地研究如何设置IPSEC。 或者,如果IPSEC不能为您使用不通过TCP传输的VPN设置。
至于你的SSH隧道的性能,我会看看你使用的密码。 有些比别人快。 也许你可以接受更快/更弱的密码。 你几乎可能想validation压缩被禁用。 如果你处在一个快速链接上,那么压缩没有任何价值,但是它可能会增加执行压缩/解压缩的延迟。 如果在改变这些之后,仍然没有得到任何改进,那么你可能想要启动tcpdump / wireshark,看看是否可以看到延迟来自哪里。
-N选项只是阻止SSH执行远程命令,而不是encryption。 无论如何,你的隧道仍然会被encryption。
如果使用-N ,ssh只是创build隧道,而不是另一端的shell和所有的环境variables。 速度更快
我不认为添加SSH隧道到您的设置将增加您的安全性,它可能甚至大大减less它。
如果将Web应用程序直接连接到数据库,则任何潜在的攻击者将只拥有应用程序使用的凭据。 如果您创build隧道,则攻击者可能会利用该隧道访问数据库主机,并危及该服务器上的所有数据。
在您的设置中,您必须手动启动隧道,并最终可能会自动化,并以某种方式存储凭据。 攻击者可以find凭据并使用它来访问数据库服务器。
如果数据库服务器和应用程序服务器位于同一个子网上,那么使用encryption的SSH隧道来访问数据的安全性可以忽略不计。 它只会保护您免受已经在networking中的攻击者的攻击。 在这种情况下,获取所有东西只是时间问题。