如何通过反向ssh代理路由多个远程主机?

我们正在尝试对几个内部应用程序进行一些behavetesting,但我们没有所需的资源在本地执行。 所以,我们正在尝试从AWS运行testing。 因为目前我们还没有VPN路由到我们的VPC,所以我不得不变得富有创造力。

我们的Selenium Grid设置(全部运行官方的Selenium Docker容器):

  • 1个Hub实例(也包括6个节点)
  • 5个额外的节点实例
  • 每个实例总共有6个节点,总共有36个节点。

到目前为止,这是我得到的:

从本地Jenkins服务器到中心实例的反向隧道。

ssh -R 9990:localhost:22 ec2-user@remotehostip

从中心,我通过反向隧道build立代理。

ssh -D 1080 -f -C -N user@localhost -p 9990 -g

然后,使用以下环境variables启动节点容器:

-e SOCKS_SERVER=localhost:1080 -e SOCKS_VERSION=5

只要这些节点驻留在集线器上,就可以工作。 我无法弄清楚的是如何让不在集线器上的节点通过隧道连接。

我试过build立一个通往集线器的隧道

ssh -D 1080 -f -C -N ec2-user@hubip -g

并开始与节点

-e SOCKS_SERVER=localhost:1080 -e SOCKS_VERSION=5

但是,这是失败的悲惨。 我甚至没有从docker中的Chromenetworking连接。

我错过了什么?

编辑:我会更好使用实际的代理服务,如Tinyproxy? 如果是这样,我可以将Tinyproxy的交通路线通过反向隧道吗?