使用 SSH 配置文件重写/重定向主机?

使用 SSH 配置文件重写/重定向主机?

我的公司有三台独立的跳转主机。例如:jump1.example.comjump2.example.comjump3.example.com

所有内部服务器都必须通过这些跳转主机进行访问:

local ---> jump1.example.com ---> internal.example.com

我们有很多内部服务器,因此为了简化,我创建了一个配置文件,如下所示:

.ssh/配置

Host jump1.example.com jump2.example.com jump3.example.com
    ForwardAgent yes
    ProxyCommand none

Host *.example.com
    PubkeyAuthentication yes
    User sbarnett
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes
    ProxyCommand ssh -q -W %h:%p jump1.example.com

请注意,我的公钥位于这些机器上,因此此设置完美运行。我可以输入ssh internal.example.com,它将正确代理jump1.example.com并通过我的私钥进行连接。

不过,我想做的是:我不想输入jump1.example.cominternal.example.com,而是只输入ssh jump1ssh internal

我知道这可以按主机进行配置,如下所示:

Host internal
    HostName internal.example.com
    PubkeyAuthentication yes
    User sbarnett
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes
    ProxyCommand ssh -q -W %h:%p jump1.example.com

但是如果我尝试更简单的方法:

Host internal
    HostName internal.example.com

*.example.com然后,当我尝试使用时,我的通用配置选项(在下)不会被加载ssh internal——所以它不使用代理,也不使用身份文件,从而阻止我连接。

有没有办法说“如果主持人姓名*.example.com(不一定是主持人)然后应用这些设置”?

当且仅当不存在时重定向*到 的方法可获得加分(例如 - 当连接到 时,我不希望它重定向到)*.example.com*[email protected][email protected]

答案1

您正在寻找的选项是CanonicalizeHostname

如果您将这些添加到 .ssh/config 的顶部,ssh internal将尝试将您的条目推测为 internal.example.com,如果成功,它将处理匹配Host *.example.com。CanonicalDomains 行可以有多个条目,按顺序尝试。

CanonicalDomains example.com
CanonicalizeHostname yes

相关内容