问题:
configurationControlPath的sshconfiguration为~/.ssh/master-%r@%h:%p
使用ProxyCommand ssh <proxyhost> --pty=false nc -q0 %h %p调用ssh的第三方工具ProxyCommand ssh <proxyhost> --pty=false nc -q0 %h %p
问题是第三方工具可能会调用带有最终目标主机10.0.0.12的proxy命令的ssh,然后AGAIN与同一个目标主机ip,但使用不同的代理中间机。
例如
ssh -o ProxyCommand 'ssh proxy1 nc -q0 %h %p' 10.0.0.12 ssh -o ProxyCommand 'ssh proxy2 nc -q0 %h %p' 10.0.0.12
如果第一个命令使用控制主,第二个命令错误地使用ControlPath,因为10.0.0.12:22在那里。
有没有解决方法或%proxy我可以在ControlPath值中使用?
更新:我还没有尝试的一种解决方法是在下次运行该工具时导出HOME = somewhere_else。 我应该能够有一个备用.ssh在这个ALT主页
回顾一下ssh_config文档,看起来好像没有简单的解决scheme。
我相信你可以修改你的ControlPath,使用%n而不是%h来获取命令行中指定的主机名。 然后,您可以为您的两台10.0.0.12机器创build真正的DNS或/ etc / hosts入口别名。 然后,当您使用不同的名称来引用它们时,您将为每个主机使用不同的ControlPath。
这种方法的缺点是,如果您通常使用指向相同IP的不同名称,那么每个这些连接将无法像以前使用相同的IP那样受益于连接共享,而不pipe用于访问它。