我有两个通过 http 进行通信的服务器。我希望这种传输是安全的。
如何实现?我不想使用 https(这需要 SSL 证书,对吧?)
[服务器-I] --> [SSH 端点]-<->--<->--<->-HTTP-<->--<->--<->- [SSH 端点] <-[服务器-II]
类似这样的事情可能吗?
答案1
一切皆有可能!ssh -C -L 8080:server-II:80 SSH-ENPOINT
将在 ssh_endpoints 之间建立隧道。然后,您可以使用以下方式请求您的服务器连接到另一台服务器http://本地主机:8080。要走另一条路,你需要另一条隧道。
答案2
如果您对使用 SSL 证书有顾虑,认为它们需要花钱,那么自签名证书是免费的,并且提供完全相同的加密。教程很容易找到。
如果您使用 curl,则可以使用-k
不要求服务器的 SSL 密钥由 CA 签名的选项。此选项的 wget 版本是--no-check-certificate
。
Dom 的解决方案将要然而,您需要保持登录状态或放弃当前 shell 中的 ssh 进程,否则当您断开连接时隧道将消失。
nohup
一种方法是在 ssh 命令前面使用。
另一种方法是将 ssh 进程置于后台,然后放弃它。您可以通过键入~^z
(波浪号后跟 ctrl-z)将 ssh 连接置于后台,然后使用bg
重新启动它在后台运行,disown
并将 ssh 隧道与 shell 分离。
我不确定该转义序列如何与链式 ssh 连接配合使用。我怀疑~~^z
如果您在使用 ssh 在两个服务器之间建立隧道之前已使用 ssh 连接到 server1,则需要键入。
你可能还想使用类似自动ssh如果隧道中断,则重新启动隧道。即使进程仍在运行,防火墙和随机网络中断也很容易导致隧道中断。
答案3
我会研究两台服务器之间的安全 VPN 连接。我尝试过使用 hamachi (http://www.logmein.com) 安装在两台服务器上。我能够在两台服务器之间创建安全的 VPN 连接,而不会出现为 VPN 通信打开端口的任何风险。默认情况下,Hamachi VPN tun 适配器的速度为 100mbps,这通常没问题,但如果您需要更高的速度,则可能会出现问题。Hamachi 也是跨平台的,并且非常易于设置。