将 ProxyCommand 和 ControlPath ssh 到两个不同的主机,它们使用不同的代理,但 IP 地址相同

将 ProxyCommand 和 ControlPath ssh 到两个不同的主机,它们使用不同的代理,但 IP 地址相同

问题:

ssh 配置,将 ControlPath 设置为~/.ssh/master-%r@%h:%p

使用以下第三方工具调用 sshProxyCommand ssh <proxyhost> --pty=false nc -q0 %h %p

问题是第三方工具可能会使用最终目标主机 10.0.0.12 的代理命令调用 ssh,然后再次使用相同的目标主机 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

如果第一个命令使用 Control Master,则第二个命令会错误地使用 ControlPath,因为那里有 10.0.0.12:22。

有没有解决方法或者%proxy我可以在 ControlPath 值中使用?

更新:我还没有尝试过的一个解决方法是下次运行该工具时导出 HOME=somewhere_else。我应该能够在那个 alt HOME 中有一个备用 .ssh

答案1

查看 ssh_config 文档,看起来没有简单的解决方案。

我相信您可以修改 ControlPath 以使用 %n 而不是 %h 来获取命令行上指定的主机名。然后,您可以为两台 10.0.0.12 机器创建真正的 DNS 或 /etc/hosts 条目别名。然后,当您使用不同的名称来引用它们时,您将为每个主机获得不同的 ControlPath。

这种方法的缺点是,如果您通常使用指向同一 IP 的不同名称,则这些连接中的每一个都将无法从连接共享中受益,就像它们以前使用同一 IP 时一样,无论使用什么主机名来访问它。

相关内容