~/.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 -l
ssh houston.texas
ssh -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