沙箱允许多个进程打开同一个端口

问题描述 投票:0回答:1

Background

我有一个命令行应用程序,用于连接到端口1234上的远程设备。我无法更改端口号,并且我无权访问源以重建此工具。我目前正在一个实验室工作,除SSH之外的所有端口都被阻止。为了解决这个问题,我创建了一个隧道,即:

ssh -L 1234:remotehost:1234 sshuser@remotehost

现在,我可以将我的CLI程序指向localhost:1234,以便将我的CLI工具连接到所需的主机。


Problem

这个CLI工具需要运行大约一个小时,我有大约200个远程主机来测试它。我想并行完成这项任务。不幸的是,我只能使用端口1234在我的本地机器上创建一个隧道。


Question

是否有(简单/简单/自动)方式来监视/沙箱我的CLI工具,以便我可以并行启动100个实例(即通过shell脚本),以便每个实例“认为”它正在与端口1234交谈?例如,Docker或KVM是否提供了我可以快速设置的某种匿名/按需计算节点功能?我宁愿不必通过手动部署和管理大量的VirtulBox主机。

linux bash networking parallel-processing virtualization
1个回答
2
投票

简单的答案是您可以在本地使用多个IP地址。客户端上的每个本地IP地址都允许您创建另一个隧道。目前,您正在使用localhost。但是您的客户端也有IP地址。您可以通过尝试以下语法来证明我的观点:

ssh -f -N -L 127.0.0.1:1234:remotehost1:1234 sshuser@remotehost1     # this is default 
ssh -f -N -L <local-IP1>:1234:remotehost2:1234 sshuser@remotehost2  # specifying non-default value <local-IP1>

现在,您只需要弄清楚如何为您的客户端提供多个IP地址(辅助地址)。然后你可以扩展到2个并行会话。

我还在你的ssh语法中添加了-f和-N,将ssh放入后台(-f)并且不发出任何命令。

在过去使用-R隧道,我发现我需要在服务器上启用GatewayPorts(/ etc / ssh / sshd_config)。在-L的情况下,我认为没有必要。但是,ssh man-page明确提到了与-L函数关联的GatewayPorts。你可能需要玩一下。我只是在我的Mac上尝试了这一点,并且我能够在没有任何GatewayPorts考虑的情况下实现它。

© www.soinside.com 2019 - 2024. All rights reserved.