如何链接SOCKS代理?

时间:2014-11-05 12:34:24

标签: ssh proxy socks

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

[A]$ ssh -ND 8888 B

我可以设置firefox在本地端口8888上使用socks代理,并且浏览工作。到目前为止一切都很好。

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

[B]$ ssh -ND 8157 C

所以我可以浏览B,好像我在C上一样。

有没有办法链接两个代理,以便我可以在使用与C的连接时在本地使用firefox(在A上)?也就是说,以某种方式转发所有firefox的socks请求全部从A到C的方式.A和C不能直接看到对方,但我到处都有完全的root ssh访问权限。所有机器都是Debian。

请注意,我不想转发单个端口(如80),我想要一个完整的链式袜子代理。

3 个答案:

答案 0 :(得分:9)

机器B上的

设置机器C的动态代理

ssh -ND 8888 user@C

然后在机器A上

ssh -L 8888:localhost:8888 user@B

这使得机器B上的SOCKS连接成为机器B的端口8888,可以从机器A上的localhost端口8888连接。

如果您无法直接连接到机器B,则可能需要打开3个ssh连接。如果您可以连接到机器B,则只需要2并且可以在需要时实际链接命令。

答案 1 :(得分:0)

这是我使用的两种解决方案。

公共SOCKS代理 在计算机B上的 public 端口上启动SOCKS代理

[machineB]$ ssh -ND <public_ip>:8080 user@machineC

或者,从机器A(两个跃点)

进行
[machineA]$ ssh user@machineB ssh -ND <machine_b_public_ip>:8080 user@machineC

然后将浏览器代理设置为on 8080端口

注意:确保机器B防火墙上的端口8080已打开

隧道代理 将本地主机SOCKS代理从机器B隧道传送到机器A

单独的命令:

[machineB]$ ssh -ND 8080 user@machineC
[machineA]$ ssh -L 8080:localhost:8080 user@machineB

或者一次性完成:

  [machineA]$ ssh -L 8080:localhost:8080 user@machineB ssh -ND 8080 user@machineC

现在将您的浏览器代理设置为端口8080上的localhost

答案 2 :(得分:-1)

你可以将ssh从机器a转换为机器b然后将其移植到机器c即 机器c

ssh -R 6333:localhost:22 user@machine_b_ip

这将通过加密隧道将机器c连接到b并在端口22上侦听现在连接到机器b上的端口6333的任何内容将被发送到端口22上的machine_c_ip

现在从机器a连接到b

ssh user_oof_machine_c@machine_b -p 6333

现在您已连接到端口6333上的机器b,从机器c发送的任何内容都将被转发到机器a

您可以反向处理不同的端口以从a到c运行cmds

我知道这不是袜子链,但是这个问题是黑客攻击