HTTPS隧道

27

在我的工作场所,流量阻塞器/防火墙越来越糟糕了。我无法通过22端口连接到家里的计算机,缺乏ssh访问让我感到沮丧。以前我可以通过将SSH移动到5050端口来使用它,但我认为一些最近的过滤器现在将这个流量视为即时消息,并通过另一个代理重定向它。那是我最好的猜测;无论如何,我的ssh连接现在在我登录之前就中断了。

这些日子里,我一直在使用Ajaxterm通过HTTPS,因为443端口仍然没有被修改,但这远非理想。(差劲的终端仿真、缺乏端口转发、我的浏览器以惊人的速度泄漏内存...)我尝试在mod_ssl上设置mod_proxy_connect,想通过HTTPS发送“CONNECT localhost:22 HTTP/1.1”请求,然后我就能搞定了。不幸的是,这似乎行不通;HTTPS连接起作用,直到我完成发送请求,然后SSL出了问题。看起来,mod_proxy_connect接管了整个连接,而不是继续通过mod_ssl进行管道传输,使HTTPS客户端感到困惑。

有没有办法让它正常工作?我不想通过纯HTTP进行此操作,有几个原因:

  • 留下一个巨大的开放代理是很烂的
  • 一个巨大的开放代理在HTTPS上也不好,但需要身份验证,我感觉还可以
  • HTTP通过代理——我对我的流量被嗅探并不太担心,因为它将通过隧道以“明文”形式传输ssh——但它更容易被篡改,而HTTPS则基本上不能被代理。

要求:

  • 必须在443端口上正常工作,并且不干扰其他HTTPS流量(即我不能只将SSH服务器放在443端口上,因为我将无法再通过HTTPS提供页面)。
  • 我已经或者可以编写一个简单的端口转发客户端,可在Windows(或Cygwin)下运行。

编辑

DAG: 在HTTP(S)上隧道传输SSH被指出,但它并没有帮助:在文章末尾,他们提到Bug 29744 - CONNECT does not work over existing SSL connection 阻止了HTTPS隧道传输,这正是我遇到的问题。此时,我可能需要考虑使用一些CGI脚本,但如果有更好的解决方案,我就不想把它列为要求。


2
最大的原因是我们公司使用的VPN软件只有Windows客户端,所以我不能在家工作(5个盒子中有5个运行Linux,而我不想麻烦地使用虚拟Windows)。我曾经使用ssh进行远程桌面的反向隧道,但现在已经失效了。 - ephemient
他们的评论框太短了,我忘记完成了。他们不喜欢任何人运行未经批准的VPN,即使他们知道人们经常使用WebEx... 耸肩 系统管理员,不能与他们同生共死,也不能没有他们。 - ephemient
这已经不那么重要了,因为现在有一个支持Nortel VPN的vpnc分支,所以我不再需要自己的定制后门。虽然如此,我仍然感到不舒服依赖于vpnc-nortel;它曾经在相同的设置上出现问题,而且如果将来出现问题,我也不知道足够的知识来修复它... - ephemient
一个快速的解决方案是webshell,我经常使用它。 - Tim Post
Apache Bug 29744已在2.4版本中修复。还有一个补丁适用于2.2.22,我将其应用于我的Ubuntu 14.04 LTS构建,仅部署mod_proxy_connect.so。 - Mark
代理隧道失败了,但是一个真正可怕的(echo -ne "CONNECT localhost:22 HTTP 1.1\r\nHost: proxy.fqdn\r\nProxy-Connection: Keep-Alive\r\n\r\n" && cat) | openssl s_client -quiet -connect proxy.fqdn:443 对我来说作为OpenSSH ProxyCommand起作用。 - Mark
13个回答

0

我成功地通过AjaxTerm使用以下设计绕过了公司的防火墙,对我有效。

公司网络上的PC --> 通过https连接到公司代理 --> INTERNET --> 我家中SSL + .htpasswd保护的Apache反向代理服务器 --> AjaxTerm服务器(从这里开始,我可以SSH到任何其他服务器)。

仍然不是完美的世界...如果我能通过HTTPS隧道连接到我的家庭网络就好了。


0
必须在端口443上工作,而不会干扰其他HTTPS流量(即我不能只将ssh服务器放在端口443上,因为我将无法再通过HTTPS提供页面)。
您是否可以将HTTPS服务器绑定到不同的端口?根据其用途,您甚至可以通过仅从家中SSH并从那里使用lynx来解决无法直接从工作地点访问它的问题。

读题更仔细一些。问题是我无法ssh回家,也不能干扰其他人正在使用的HTTPS服务器。 - ephemient
我已经看到问题了,但是我不知道您的具体情况。将HTTPS移动到另一个端口并提供新的详细信息可能是可行的(也可能不可行)。在10443上的HTTPS可能无法通过您的工作防火墙,但由于您可以在443端口上进行SSH,因此lynx是一种选择。 - Cebjyre

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接