与两个客户端的多跳反向 SSH 隧道

与两个客户端的多跳反向 SSH 隧道

a). 我有远程客户端 1(树莓派),它位于路由器 1 后面,连接到互联网,没有端口转发。

b). 我有一个已知 IP 的 SSH 服务器。

c). 我有一台笔记本电脑,我想在 Firefox 中使用代理登录 router1。

我尝试这样做:

在远程客户端 1(树莓派)上我执行以下操作:

ssh -N -R 2222:localhost:22 [email protected]

在我的笔记本电脑上,我 ssh 进入服务器

ssh [email protected] 

然后这样做

ssh -l root -p 2222 localhost

为了在远程客户端 1 中使用 ssh

3.我像这样设置腻子隧道

腻子隧道

Firefox 就是这样的

Firefox 设置

现在如果我要转到 myipaddress。我将获得服务器 ip 地址,而不是远程客户端 1 的 ip 地址。

知道哪里出了问题吗?

答案1

这与我做这件事的方式非常不同,而且我认为你的方式不正确。

  1. 首先,您需要在 RPI 上设置一个 SOCK5 代理,但我认为您到目前为止还没有这样做。

    ssh -fN -D 50000 localhost 
    

    这将打开端口 50000 作为 SOCK5 代理。选项-F将进程置于后台,这很有用,因为您需要在 RPI 上发出另一个命令。但这还要求您在 RPI 上设置无密码登录,这通常是一件非常重要的事情,因此我强烈建议您这样做,无论我们在这里讨论什么。

  2. 现在您需要将某个端口(比如说 6666)从远程服务器转发到 RPI SOCK5 代理:

    ssh -fN me@server -R 6666:localhost:50000
    
  3. 现在您需要将笔记本电脑本地的端口转发到远程服务器。如果这是一台 Linux/Unix 机器,命令将是:

    ssh -fN me@server -L 8000:localhost:6666
    

    不幸的是,我从未使用过 Windows,所以我无法建议如何在 Putty 中执行此操作,但您似乎有足够的知识可以在没有我帮助的情况下解决问题。

  4. 最后,你可以将浏览器配置为使用 SOCK5 代理本地主机:8000

请注意,这些都不涉及转发正常的 ssh 端口 22 或 2222,而这似乎是您所做的。要转发的端口是以外ssh 端口。事实上,这些端口是甚至不在您的向外的界面上打开,它们在您的本地打开(= 127.0.0.1) 接口,这就是为什么您不需要更改防火墙配置即可实现此功能的原因。反过来,这也是您可以绕过 RPI LAN 的限制性防火墙配置的原因。所有流量,即使是用于端口 6666、50000 或 8000 的流量,都通过 ssh 端口(22,或者在您的路由器的情况下可能是 2222)路由,然后由 ssh 正确路由到本地主机:6666/50000/8000在目标电脑内。

此外,Firefox 中的代理端口(您的端口为 2012)与转发到 RPI 的服务器端口(即 2222)之间存在断开连接:这两个端口需要相同:正如您在我的示例中所见,在服务器上我总是使用端口 6666,这样与代理相关的数据包就会从笔记本电脑流向服务器:6666,然后从服务器:6666 流向 RPI:50000。但最终,这些都不重要,因为您没有在 RPI 上监听的 SOCK5 代理,而您应该设置它。

顺便说一句,如果你打算长时间(比如带着笔记本电脑旅行时几个小时或几天)让 RPI 和服务器之间的连接无人看管,你也许可以看看自动SSH,这是一个非常方便的脚本,它会检查 ssh 连接是否打开,如果没有,它会终止之前的 ssh 连接并自动重新启动。这样,即使您连续几天在外旅行,也能保证从服务器到 RPI 的连接始终处于打开状态。

它起作用了,我刚刚在跨越几大洋的连接上尝试过了 ;-)

相关内容