通过多个防火墙的反向 SSH 隧道

Reverse SSH tunnelling through multiple firewalls

我想从我的家庭计算机访问我的工作计算机,它位于防火墙后面。

由于工作防火墙阻止了意外的传入连接,因此我必须打开从工作计算机到家用计算机的反向 SSH 隧道,如下所示:
ssh -R 12345:localhost:22 homeuser@homeip
从我的家用电脑,我可以使用端口 12345 访问工作电脑:
ssh -p 12345 workuser@localhost

问题是这需要我在我的家庭防火墙中打开漏洞并将端口转发到我的家庭计算机。

这是我的问题:

有什么方法可以让两台机器在半路相遇?
我们每个人都可以通过某种方式发起与对方的传出连接吗?

没有。如果您不想转发路由器中的端口,那么您需要在两台计算机之间连接一些可相互访问的计算机。 (这可能是一个虚拟机,例如 Digital Ocean 提供的那些,或者是一个提供 shell 登录的网络主机,或者您可以在您的家庭网络上使用 Raspberry Pi 之类的东西,并转发给它所以它始终可用。)

如果您想访问远程计算机上的端口 22:

ssh -R 12345:localhost:22 user@your.sshgateway.com

然后在家用电脑上:

ssh -L 2222:localhost:12345 user@your.sshgateway.com

然后您可以连接到远程计算机:

ssh -p 2222 workuser@localhost