在我的工作场所,交通拦截器/防火墙越来越糟糕.我无法连接到22端口的家用机器,缺少ssh访问让我感到难过.我以前能够通过将其移动到端口5050来使用SSH,但我认为最近的一些过滤器现在将此流量视为IM并将其重定向到另一个代理,也许.这是我最好的猜测; 在任何情况下,我的ssh连接现在在我登录之前终止.
这些天我一直在通过HTTPS使用Ajaxterm,因为端口443仍然没有被干扰,但这远非理想.(Sucky终端仿真,缺少端口转发,我的浏览器以惊人的速度泄漏内存......)我尝试设置mod_proxy_connect
在上面mod_ssl
,CONNECT localhost:22 HTTP/1.1
我想通过HTTPS 发送请求,然后我会全部设置.可悲的是,这似乎不起作用; HTTPS连接有效,直到我完成发送请求为止; 然后SSL疯了.看起来好像mod_proxy_connect
接管整个连接而不是继续通过mod_ssl
,混淆了HTTPS客户端.
有没有办法让这个工作?我不希望通过纯HTTP执行此操作,原因如下:
留下一个像胖子一样大胖的开放代理
一个大胖开放代理也不比HTTPS好,但是需要身份验证才对我感觉良好
HTTP通过一个代理 - 我不太关心我的流量被嗅探,因为它是通过隧道将"明白"的ssh - 但它更可能被破坏比HTTPS,从根本上不能被代理
要求:
必须在端口443上工作,而不会干扰其他HTTPS流量(即我不能将ssh服务器放在端口443上,因为我将无法再通过HTTPS提供页面)
我有或可以编写一个在Windows(或Cygwin)下运行的简单端口转发器客户端
DAG:我已经向我指出了隧道SSH over HTTP(S),但它没有帮助:在文章的最后,他们提到了错误29744 - CONNECT无法通过现有的SSL连接工作,从而阻止通过HTTPS进行隧道传输,我遇到的问题.此时,我可能正在查看一些CGI脚本,但如果有更好的解决方案,我不想将其列为要求.
找出公司为什么有这样一个限制性政策.这可能是有充分理由的.
如果您仍然发现要绕过策略,可以编写一个小代理,它将在端口443上侦听您的服务器,然后根据请求将流量转发到您的Web服务器或SSH守护程序.虽然有两个渔获量.
要确定它是HTTPS请求还是SSH请求,您需要尝试读取一些(小)超时的数据,这是因为TLS/SSL握手是从客户端发送一些数据开始的,而SSH握手是从服务器开始的发送一些数据.超时必须大到足以延迟在TLS/SSL握手中从客户端传递初始数据,因此它将使建立SSH连接变慢.
如果您公司的HTTP代理是智能的,当您CONNECT
到端口443 时,它实际上会窃听预期的TLS/SSL"握手" ,并且当它检测到它不是TLS/SSL握手时,它可能会终止SSH连接尝试.为了解决这个问题,您可以将SSH守护程序包装到TLS/SSL隧道(例如stunnel
)中,但是您需要根据客户端请求中的TLS/SSL版本来区分请求,以确定是否路由TLS/SSL连接到Web服务器或TLS/SSL隧道SSH守护程序.
您应该能够使用iptables将ssh流量从您的工作机器转发到ssh,而在端口443上连接到您的主服务器的所有其他机器都获得Apache服务器.
尝试这样的规则:
iptables -t nat -A PREROUTING -p tcp -s 111.111.111.111 --dport 433 -j REDIRECT --to-port 22
111.111.111.111是您办公室计算机的IP地址.
这一切都假设你正在运行Linux> = 2.4,你现在应该这样做.它已经出了差不多十年了.
iptables的文档位于http://www.netfilter.org.
在家中设置OpenVPN 2.1服务器,使用端口443(如果您在端口443设置家庭任何HTTPS服务,触发OpenVPN的端口共享选项以在端口443处理OpenVPN和HTTPS事务;此功能仅适用于非Windows操作系统)
然后,在road-warrior模式下在笔记本电脑上设置OpenVPN客户端,以访问家中的OpenVPN服务器.您可以在使用OpenVPN创建的安全VPN网络中呼叫家庭或任何您喜欢的地方.为此,不再需要使用SSH.