使用 ssh 客户端绕过 ISP NAT+防火墙规则的快速方法

使用 ssh 客户端绕过 ISP NAT+防火墙规则的快速方法

我的家庭 ISP 使用基于 NAT 的网络,在我的室内路由器中修改了路由器固件。然后我就无法访问所有路由器功能。再加上他们阻止了所有数据输出到 22 端口的事实,所以我无法轻松使用 ssh-client。经过 2 周的客户服务请求,我只收到一次技术访问,而“专业人士”不知道该怎么做。

我知道我可以使用类似工具torsocks通过 tor 中继连接 ssh,虽然可以,但速度太慢了。而且我通常使用带有 ++ 的环境sshtmuxvim主机中编程。

我还有另一个选择,那就是使用内部 ISP 调制解调器作为桥接器。它可以解决问题,但我需要一个 5G 路由器,而我这里没有,而且在我拥有的范围内,它的价格相当昂贵。而且由于他们对路由器软件有完全的远程控制权,我不知道他们什么时候会删除这个选项。

请记住,匿名不是问题,因为我在家里,而且我只想访问我有合法访问权的服务器。

我如何使用本地代理(以及哪个)来绕过此 NAT 限制?

或者有更快的中继配置来解决这个问题?

答案1

如果你可以选择更换一个不那么苛刻的供应商,你应该考虑一下。如果你的出站SSH 连接被阻止,可能是通过端口号而不是数据包分析(如果它数据包分析,逃跑!),所以你需要一个不同端口上的 SSH 服务器来跳转。

一旦拥有一个可以连接到除 22 之外的端口的受信任的外部 SSH 服务器,就可以使用它连接到任何其他 SSH 服务器,方法是使用代理跳转或者它的前辈(更强大),代理命令

从命令行使用 ProxyJump:

ssh -J [email protected]:222 [email protected]

ProxyJump 使用 ~/.ssh/config 中的条目

Host final-target
  HostName final-target.example.com
  ProxyJump [email protected]:222
  User ton

ProxyJump 适用于每一个您要连接的主机:

Host jump-box
  HostName external-jump-box.example.net
  Port 222
  User user1
Host * !external-jump-box.example.net
  ProxyJump [email protected]:222

如果用户名与您在本地系统上使用的用户名相同,则无需指定用户名。如果删除它,请删除User配置中的行和/或用户名以及@它出现的 at-sign ( )。我为您的跳转框使用了单独的用户名,只是为了说明如何做到这一点。

(这可能会造成无限循环。如果是这样,您将不得不使用 ProxyCommand。请告诉我,我也会在这里记录下来。)

视窗可以使用油灰使用其 plink.exe 实用程序,如关于此问题中所述PuTTY 中的 OpenSSH ProxyCommand 等效项

答案2

我有这样的设置。我使用我的桥接 ISP 调制解调器和带有修改过的固件的路由器将传入端口 22 和其他连接转发到我的网络服务器。桥接模式的调制解调器是必须的,否则您必须从调制解调器本身进行端口转发,而不是从修改过的路由器进行端口转发。

如果只是端口 22 被阻止,您可以尝试使用其他端口。通过查看每个数据包来过滤流量的防火墙更昂贵,而且公司不太可能有防火墙。您可以使用 torsocks 进行连接,这表明它们可能只是在过滤端口 22。

呼!

相关内容