Vagrant 沙盒允许多个进程打开同一端口 背景

Vagrant 沙盒允许多个进程打开同一端口 背景,vagrant,linux,bash,networking,parallel-processing,virtualization,Vagrant,Linux,Bash,Networking,Parallel Processing,Virtualization,我有一个命令行应用程序,用于连接端口1234上的远程设备。我无法更改端口号,并且无法访问源以重建此工具。我目前在一个实验室工作,除了SSH之外,所有端口都被阻止。为了解决这个问题,我创建了一个隧道,即: ssh -L 1234:remotehost:1234 sshuser@remotehost 现在,我可以将我的CLI程序指向localhost:1234,用我的CLI工具连接到所需的主机 问题 这个CLI工具需要连续运行大约一个小时,我有大约200台远程主机要用它进行测试。我想将此任务并行

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

ssh -L 1234:remotehost:1234 sshuser@remotehost
现在,我可以将我的CLI程序指向
localhost:1234
,用我的CLI工具连接到所需的主机


问题 这个CLI工具需要连续运行大约一个小时,我有大约200台远程主机要用它进行测试。我想将此任务并行化。不幸的是,我只能使用端口1234在本地计算机上创建一个隧道


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

简单的答案是,您可以在本地使用多个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>
ssh-f-N-L 127.0.0.1:1234:remotehost1:1234sshuser@remotehost1#这是默认设置
ssh-f-N-L:1234:remotehost2:1234sshuser@remotehost2#指定非默认值
现在,您只需要了解如何为客户端提供多个IP地址(辅助地址)。然后您可以将其扩展到2个并行会话之外

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


在过去使用-R隧道时,我发现需要在服务器上启用网关端口(/etc/ssh/sshd\u config)。在-L的情况下,我认为没有必要。但是,ssh手册页明确提到了与-L函数关联的网关端口。你可能需要玩一会儿。我刚刚在我的Mac电脑上试用过,我能够在不考虑任何网关端口的情况下运行它。

简单的答案是,您可以在本地使用多个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>
ssh-f-N-L 127.0.0.1:1234:remotehost1:1234sshuser@remotehost1#这是默认设置
ssh-f-N-L:1234:remotehost2:1234sshuser@remotehost2#指定非默认值
现在,您只需要了解如何为客户端提供多个IP地址(辅助地址)。然后您可以将其扩展到2个并行会话之外

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


在过去使用-R隧道时,我发现需要在服务器上启用网关端口(/etc/ssh/sshd\u config)。在-L的情况下,我认为没有必要。但是,ssh手册页明确提到了与-L函数关联的网关端口。你可能需要玩一会儿。我只是在我的Mac电脑上试用了一下,我能够在不考虑任何网关端口的情况下运行它。

非常简单。真不敢相信我竟然忽略了这一点。谢谢非常简单。真不敢相信我竟然忽略了这一点。谢谢