我有一台通过 3G PPP 连接的远程计算机。我无法通过互联网连接到这台计算机,因为我相信 PPP IP 池使用 NAT 连接到互联网(连接时我得到的是 10.xxx 地址)
因此,我让远程计算机与 Internet 上的服务器建立 SSH 连接。然后,我可以从服务器建立此连接,并在远程计算机上获取 shell。太棒了。
我希望能够访问远程网络上的摄像头的 Web 界面。因此,我创建了第二个 SSH 隧道,将流量重定向到摄像头的地址,即:ssh -R 9000::
从我的互联网主机上,这个方法可行,我得到了网页:wget 127.0.0.1:9000 太棒了
现在我需要在我的客户端电脑上运行此功能,因此:
客户端电脑-->互联网服务器--隧道-->远程计算机-->IP摄像机
所以本质上我需要让我的反向 SSH 隧道在网络上可用。
我以为只要使用 iptables 将我的 Internet 服务器上某个端口的传入流量转发到 127.0.0.1:9000 就可以了,但是在使用 iptables、NAT 等几个小时之后,我还是无法让它工作。
这应该可行吗?
答案1
我认为您需要-o GatewayPorts=yes
允许本地以外的其他主机使用您的隧道。摘自手册页:
指定是否允许远程主机连接到本地转发端口。默认情况下,ssh(1) 将本地端口转发绑定到环回地址。这可防止其他远程主机连接到转发端口。GatewayPorts 可用于指定 ssh 应将本地端口转发绑定到通配符地址,从而允许远程主机连接到转发端口。参数必须是“yes”或“no”。默认值为“no”。