无法使用 ~/.ssh/config 和别名解析主机名

无法使用 ~/.ssh/config 和别名解析主机名

~/.ssh/config我有一个如下所示的配置文件:

Host *.texas
  User john

Host *.texas !gateway.texas
  HostName %h.unitedstates.com
  ProxyJump gateway.texas

Host gateway.texas
  HostName ssh.texas.unitedstates.com

Host dallas austin
  HostName %h.texas
  RemoteCommand zsh -l

总之,我期望ssh dallas解析为 ,而解析为。第二个示例按预期工作,但不是第一个示例(未解析的主机名)。我怀疑它与 有某种关系,而 应该反过来解析为ssh -J ssh.texas.unitedstates.com [email protected] zsh -lssh houston.texasssh -J [email protected] [email protected]%h.texas%h.unitedstates.com

有人可以帮忙吗?

谢谢!

答案1

正如评论中提到的,默认情况下递归主机名解析是不可能的,但有几个选项可以提供帮助,包括 Match 和 CanonicalDomains/CanonicalHostName。最后,我用这样的方法解决了这个问题:

CanonicalDomains texas.unitedstates.com
CanonicalizeFallbackLocal no
CanonicalizeHostname yes

Host *.texas.unitedstates.com
  User john
  IdentityFile ~/.ssh/texas

Host *.texas.unitedstates.com !ssh.texas.unitedstates.com
  HostName %h
  ProxyJump ssh.texas.unitedstates.com

Host dallas austin
  HostName %h.texas.unitedstates.com
  RequestTTY yes
  RemoteCommand tmux new -As remote

更多信息规范化以及匹配

相关内容