如何链接 SOCKS 代理?

use*_*114 10 ssh proxy socks

前言:我要寻找的是与上述格式相同的明确说明。也就是说,类似于运行:“……在机器 A 上运行命令 X,然后在机器 B 上运行命令 Y……”

我有一个从我的笔记本电脑(机器 A)到机器 B 的工作袜子代理:

[A]$ ssh -ND 8888 B
Run Code Online (Sandbox Code Playgroud)

我可以设置 Firefox 在 A 的本地端口上使用 SOCKS 代理8888,并在 A 上浏览。到现在为止还挺好。

但是我在机器 B 和 C 之间也有一个袜子代理:

[B]$ ssh -ND 8157 C
Run Code Online (Sandbox Code Playgroud)

所以我可以像在 C 上一样在 B 上浏览,将 B 的 Firefox 袜子代理设置为8157.

有没有办法链接两个代理,以便我可以在使用与 C 的连接时在本地(在 A 上)使用 Firefox?

也就是说,以某种方式将所有 Firefox 的袜子请求从 A 一直转发到 C。A 和 C 不能直接看到对方,但我到处都有完全的 root SSH 访问权限。所有机器都是Debian。

请注意,我希望转发一个端口类似的端口80,但我希望有一个完全链SOCK代理

gla*_*len 12

刚刚确认这适用于一些虚拟机:

[A]$ ssh -tt -v -L8888:localhost:8157 user@B ssh -t -D 8157 user@C
Run Code Online (Sandbox Code Playgroud)

A 上,您打开了从本地 8888 到B 上的 8157 的端口转发隧道-L8888:localhost:8157。与 B 建立连接后,将ssh -t -D 8157 user@C运行远程命令,该命令通过C提供您的 SOCKS 代理。从我读过的内容来看,似乎需要使用“-t”,但我仍然需要弄清楚原因。

请注意,这是第一台主机上的一个命令,它从A->BB->C调用 ssh 两次。您也可以将其分解为单独的命令,如下所述。

奖励:用于链接三个代理......

IE A->B->C->D->Internet

[hostA]$ ssh -2 -C -D 55557 -L 55556:127.0.0.1:55556 -L 55555:127.0.0.1:55555 user@B
[hostB]$ ssh -2 -C -D 55556 -L 55555:127.0.0.1:55555 user@C
[hostC]$ ssh -2 -C -D 55555 user@D
Run Code Online (Sandbox Code Playgroud)

请注意,对于每个跃点,您都需要-L在链中的先前主机上有一个额外的匹配转发器。

参考: