如何通过反向 SSH 隧道进行 SOCKS?

如何通过反向 SSH 隧道进行 SOCKS?

我已经完成了两件事,但我想做第三件事:我想使用具有动态 IP 的远程 Raspberry Pi(运行 Raspbian)作为冲浪的 SOCKS 代理。但我只能通过反向隧道访问这个Rpi。

所以我有:

  • 我的本地桌面(动态 IP 后面)
  • 另一个国家的 Raspberry Pi(动态 IP 后面)
  • 具有固定IP的专用服务器

我可以完全控制所有这些机器,但不能控制本地桌面和远程 Raspberry Pi 前面的路由器。

以下工作正常:

ssh -D 5222 [email protected] -N [email protected]

这允许使用 Firefox 或 Chromium 进行冲浪,就像我从 IP aaa.bbb.ccc.ddd 的服务器上冲浪一样(我需要做的就是配置 SOCKS 以使用端口为 5222 的 localhost)。

以下也可以正常工作:

ssh -t [email protected] "ssh rspi@localhost -p 32402"

Raspberry Piautossh总是使用固定 IP 建立到服务器的反向隧道(在本例中,我知道它位于端口 32402 上:当端口更改时,它会告诉我它正在使用哪个端口,因此那里没有问题)。

因此,通过“双重 ssh 命令”,我可以通过具有固定 IP 的服务器进行传输,从本地桌面的终端控制我的 Rapsberry Pi。

到目前为止,一切都很好。现在知道这两个工作正常,我想知道允许我使用远程 Raspberry Pi 作为 SOCKS 代理进行冲浪的魔法是什么(请记住,我始终知道 Raspberry Pi 建立反向 SSH 隧道的端口在)?

我应该在远程 Raspberry Pi 或专用服务器上进行任何修改/配置,还是只需从本地桌面正确设置即可?

答案1

desktop$ ssh -J [email protected] -D 5222 -p 32402 rspi@localhost

嗯,这实际上就是所需要的。

如果您的命令ssh对于命令来说太旧-J,您可以用这两个命令替换上面的行(在两个终端中或使用诸如-f -N将第一个命令置于后台之类的选项):

desktop$ ssh -L 32402:localhost:32402 [email protected]
desktop$ ssh -D 5222 -p 32402 rspi@localhost

-J选项只是避免在第二种旧方法中运行第一个命令的快捷方式。

相关内容