我的笔记本电脑(机器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),我想要一个完整的链式袜子代理。
答案 0 :(得分:9)
设置机器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
我知道这不是袜子链,但是这个问题是黑客攻击