我有一个命令行应用程序,可用于连接端口1234
上的远程设备。我无法更改端口号,并且无法访问源来重建此工具。我目前在实验室中,除SSH以外的所有端口均被阻止。为了解决这个问题,我创建了一条隧道,即:
ssh -L 1234:remotehost:1234 sshuser@remotehost
现在,我只需将CLI程序指向localhost:1234
,即可将CLI工具连接到所需的主机。
此CLI工具需要连续运行大约一个小时,我大约有200个远程主机可以对其进行测试。我想并行处理此任务。不幸的是,我只能使用端口1234
在本地计算机上创建一个隧道。
是否有一种(简单/简单/自动化)方式来监牢/沙盒化我的CLI工具,以便我可以并行启动100个实例(即通过shell脚本),以便每个实例“认为”它正在与端口{{ 1}}?例如,Docker或KVM是否提供我可以快速设置的某种匿名/按需计算节点功能?我宁可不必通过vagrant手动部署和管理大量VirtulBox主机。
答案 0 :(得分: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隧道,发现我需要在服务器(/ etc / ssh / sshd_config)上启用GatewayPort。对于-L,我认为没有必要。但是,ssh手册页明确提到了与-L函数关联的GatewayPort。您可能需要玩一些。我只是在Mac上进行了尝试,并且无需考虑GatewayPorts就可以使它运行。