前言:我正在寻找的是明确的指令,格式与上述相同。也就是说,类似于运行:“…在机器 A 上运行命令 X,然后在机器 B 上运行命令 Y…”
我有一个从我的笔记本电脑(机器 A)到机器 B 的有效 socks 代理:
[A]$ ssh -ND 8888 B
我可以设置 Firefox 在 A 的本地端口上使用 SOCKS 代理8888
,这样 A 上的浏览就可以正常进行。到目前为止一切顺利。
但是我在机器 B 和 C 之间也有一个 socks 代理:
[B]$ ssh -ND 8157 C
因此,我将 B 的 Firefox socks 代理设置为 ,这样就可以像在 C 上一样在 B 上进行浏览8157
。
有没有办法将两个代理链接起来,以便我能够在使用与 C 的连接的同时在本地(在 A 上)使用 Firefox?
也就是说,以某种方式将所有 Firefox 的 socks 请求从 A 转发到 C。A 和 C 无法直接看到对方,但我在任何地方都有完整的 root SSH 访问权限。所有机器都是 Debian。
请注意我不想要转发单个端口,比如端口 80,但我想要一个全链式 SOCK 代理。
答案1
刚刚确认这适用于一些虚拟机:
[A]$ ssh -tt -v -L8888:localhost:8157 user@B ssh -t -D 8157 user@C
从A,你打开一个从本地 8888 到 8157 的端口转发隧道乙 -L8888:localhost:8157
。一旦你与 B 建立了连接,远程命令ssh -t -D 8157 user@C
就会运行,它通过C。据我所读,‘-t’ 似乎是必需的,尽管我仍然需要弄清楚为什么。
注意,这是第一个主机上两次调用 ssh 的一个命令,来自A->B以及来自B->C。您还可以将其拆分为单独的命令,如下所述。
奖励:链接三个代理......
IEA->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
-L
请注意,对于每次跳跃,您都需要在链中的先前主机上添加一个匹配的转发器。
参考:
答案2
glallen 的出色回答利用 SSH 可以完成这项工作。但是,实现此目的的正确方法是使用该proxychains
程序。ProxyChains 是一个功能强大的工具,可让您轻松地同时利用多个代理服务器。例如,黑客使用它来隐藏他们的身份,同时进行互联网攻击 - 通过将世界各地的一堆代理链接在一起,任何法医调查人员几乎不可能将流量一直追溯到他们。并不是说你是一个恶意黑客 - 它将适用于许多不同的用例。;)
ProxyChains 默认安装在一些 Linux 发行版上(例如 Kali Linux)。例如,在 Ubuntu/Debian 上,你可以通过执行以下操作轻松安装它:
sudo apt-get install proxychains
Proxychains 在 处查找配置文件/etc/proxychains.conf
。安装完成后,备份现有的 Proxychains 配置文件(如果存在)并创建一个新的:
mv /etc/proxychains.conf /etc/proxychains-backup.conf
nano /etc/proxychains.conf
现在,粘贴我为您编写的示例配置:
strict_chain
proxy_dns
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks4 192.168.1.1 8888
socks4 192.168.1.2 8157
socks4 192.168.1.3 6969
在此示例中,192.168.1.1
是第一个 SOCKS 代理服务器的 IP 地址,8888
是第一个 SOCKS 代理正在监听的端口,192.168.1.2
是第二个 SOCKS 代理服务器的 IP 地址,8157
是第二个 SOCKS 代理正在监听的端口,依此类推。
现在,通过命令行启动 Firefox,从而利用 proxychains proxychains firefox
。(请确保先关闭 Firefox。)现在,每当 Firefox 建立传出连接时,proxychains 程序都会封装流量,以便通过您在此配置文件中指定的所有服务器进行代理。需要明确的是,在您的 Firefox 首选项中,您不应指定任何代理服务器 - proxychains 将在后台处理所有事情。
请注意,为了进行故障排除,您应该先尝试一次使用 1 个代理使其工作,然后再尝试所有 3 个代理。;)
参考:
- proxychains 官方网站(最新版本为 3.1,2006 年发布):http://proxychains.sourceforge.net
proxychains-ng
(原始 proxychains 的一个分支,实际上截至 2015 年仍在维护)的网站:https://github.com/rofl0r/proxychains-ng