我的 ISP 为我的家庭路由器提供了 192.168.* IP。只有建筑物中的主要公司路由器获得真正的 IPv4 IP,但建筑物中的所有租户共享该 IP。他们不进行 IP 转发,因此我无法请求将端口 22 转发给我或类似的东西。
使用 Tor,我可以打开到 Tor 网络的路由并从外部通过 ssh 登录。然而,正如你所想象的那样,它非常滞后。同样,我的 Synology NAS 打开到 Synology 远程服务器的路由,我可以远程连接到它。
我想知道这个传输系统叫什么,以及如何使用它将我的家用计算机连接到我已经租用的 VPS 服务器(又名我的堡垒主机),以便我可以通过堡垒主机远程 ssh 登录,而无需需要通过 Tor。我喜欢 Tor,但 ssh 的延迟让我抓狂。
答案1
我最近做了完全相同的事情来连接到通过移动网络连接到互联网上的物联网设备,因此在 NAT 下。
我的解决方案基于 Google Cloud 上的微实例。它的IP必须是永久的,我们称之为server_ip
。似乎不需要防火墙规则。
在您想要远程连接的本地设备上,运行:
ssh -N -R 5757:localhost:22 <server_ip>
其中 5757 是将在服务器上打开的侦听端口(可以是任何端口,但不能大于 1023)。这指示服务器
在终端设备上(例如,当您出门在外时在笔记本电脑上)运行:
ssh -J <server_ip> -p 5757 localhost
这将通过以下方式连接您跳转主机,将 ssh 连接直接路由到从您的家庭设备打开的连接。
为了让一切更安全、更顺畅,我建议您使用基于 SSH 密钥的身份验证,无论是在服务器还是在您的家庭设备中。如果您需要进一步的帮助,请发表评论。
最后要注意的是,第一个命令 ( ssh -N -R 5757:localhost:22 <server_ip>
) 不得退出,因此您必须使用nohup
服务或通过服务运行它。后一种解决方案是我更喜欢的解决方案,这是我的服务文件:
[Unit]
Description=Reverse SSH to GCL on port 5757
After=network.target
[Service]
Type=simple
User=flynn
ExecStart=/usr/bin/ssh -N -R 5757:localhost:22 <server_ip>
Restart=always
StartLimitInterval=30
[Install]
WantedBy=multi-user.target