在家里,我知道如何建立工作网关之间的 ssh 隧道。对于网关来说,最重要的是能够与我家里的机器建立 ssh 连接。我通过设置 wifi 路由器的 NAT 选项来做到这一点。
但有时我在机场。这里的 wifi 连接不允许建立这种连接。
您知道还有其他方法吗?
谢谢
答案1
我推荐'索特' 项目通过 HTTP 创建隧道。
您必须知道代理主机名和端口。
在家里,您需要一个正在运行的 tomcat 服务器,其中部署了“soht”,可能与 apache 反向代理结合使用。
答案2
在机场,您通常需要支付网络连接费用。打开浏览器后,您将进入一个可以购买网络连接的页面,或者如果您有订阅,请输入用户名/密码。除非您先这样做,否则任何网络通信都将被禁用。
如果这没有帮助,请尝试将 SSH 端口号更改为通常允许的内容,例如 SMTP 或 POP3 端口。端口 81 通常也是一个不错的选择。
答案3
您是否尝试创建从您的 PC 到工作地点的出站隧道,或从工作地点到您的 PC 的入站隧道?
如果是前者,那么你可能遇到的情况是提供商的防火墙阻止了特定端口上除 HTTP/HTTPS 之外的所有内容。这种情况很不寻常:我不记得上次任意出站流量被阻止是什么时候了,而且通常使用 SSH 访问我的家用机器都没有问题。如果你被阻止了,那么某种 HTTP 隧道(如其他发帖者所建议的)将是唯一的选择——尽管我无法想象这意味着多少开销。
如果问题是您无法打开从办公室到机场笔记本电脑的连接(我假设这是您想要的,因为您谈到了 NAT 设置),那么您将无法直接连接。您几乎肯定在机场防火墙后面有一个私有 IP,因此无法将数据包路由给您。
另一种方法是建立两个隧道,中间有一个受信任的主机(您的家用计算机)。您需要在防火墙中打开两个端口:您的常规 SSH 端口(22,但请参见下文)和另一个端口 - 比如 2201。从工作地点打开一个到家用计算机的反向隧道,使用诸如2201:localhost:22
-- 所有到家用计算机端口 2201 的连接都将通过隧道传输到工作计算机的端口 22。然后从您的笔记本电脑打开一个到家用计算机的正向隧道,使用诸如22:localhost:2201
-- 所有到笔记本电脑端口 22 的连接都将转发到家用计算机的 2201 的参数。
当然,这不是最佳设置。您不仅需要在中间切换,而且如果您使用 ADSL(就像我一样),上传速度会很慢。总而言之,传统 VPN 可能是更好的选择(再次假设:您使用 SSH 是因为传统 VPN 太慢)。
附注:打开家用防火墙的 22 端口并不是个好主意:迟早你会受到攻击。即使不会导致被黑客入侵,攻击者也会占用大量带宽和磁盘空间(我第一次也是唯一一次遇到这种情况,身份验证日志在一小时内增长到数兆字节 - 然后我打了自己一巴掌,觉得自己太蠢了,关闭了端口 - 尽管我的密码不受字典攻击,但把门打开仍然是个坏主意)。
编辑:为了让 sshd 监听其他端口,编辑文件/etc/ssh/sshd_config
(Windows 用户,请自行处理),并添加其他Port
指令(查找现有的“端口 22”条目):
# What ports, IPs and protocols we listen for
Port 22
Port 2201
答案4
如果我误解了你的问题,那么机场防火墙会阻止你在端口 22 上的传出连接。为了绕过这个问题,请通过 DNS 隧道传输你的 ssh 连接:http://www.boingboing.net/2004/06/21/tunneling-ssh-over-d.html
请注意,这样做您几乎肯定能够绕过他们的“付费网络”系统 - 只需建立此连接,然后通过它隧道传输您的 HTTP 连接。
如果您的目标是绕过他们的付费方案,那么如果您坐在其他人付费的区域,然后跑去airodump-ng
或以其他方式找到使用其中一个付费网络发送/接收大量数据包的人的 mac 地址,您将获得更好的连接。只需伪造他的 mac 地址,您就可以访问互联网。
<morals>
上述两种技术都严重处于道德灰色地带。搭载他人的连接甚至可能是非法的,我不确定,但无论如何,您都会减慢他的服务速度,实际上是窃取他的带宽。虽然通过 ssh-over-dns 获取免费互联网不会对其他人的付费服务产生负面影响,但您仍在使用公司必须支付的资源并免费获得付费服务,因此我建议先为他们的服务付费,即使这不是必要的,然后再创建隧道。还请考虑机场可能出于正当理由阻止出站 22(尽管只有上帝知道那可能是什么)。
在尝试免费获取付费服务或尝试扩展提供商所提供的服务范围之前,您应该考虑这些都是什么。
</morals>