我可以将 ubuntu 配置为将域附加到 ssh 主机名请求的末尾吗?

Tim*_*orn 9 server ssh networking hostname

我有很多服务器,它们都以相同的 server.company.net 结尾,例如 vded-xx-001.servers.company.net,我想知道是否有可能做到这样我就可以输入 vded- xx-001 并让它自动附加servers.company.net?

所以我想输入

ssh user@vded-xx-001
Run Code Online (Sandbox Code Playgroud)

并让它真正连接到

ssh user@vded-xx-001.servers.company.net
Run Code Online (Sandbox Code Playgroud)

我曾尝试在 /etc/network/interfaces 中将我的 DNS 搜索域设置为 servers.company.net,但这并没有达到预期的结果。

任何人都能够指出我正确的方向?

提前致谢

小智 20

可能你已经解决了这个问题,但也许以后它可以帮助某人:你不需要弄乱你的resolv.conf,只需在你的 中使用类似的东西~/.ssh/config

Host vded-*-001 test-*-something-fixed-*
        HostName %h.servers.company.net
        User someusername
Run Code Online (Sandbox Code Playgroud)

所以稍后你可以使用:

ssh vded-alotofstuff-001
ssh vded-somethingels-001
ssh test-02-something-fixed-somethingelse
Run Code Online (Sandbox Code Playgroud)

  • 以防万一我忘记并稍后再次查找,如果您想在共享相同配置的同时允许短名称和长名称,只需指定第一个条目`Host vded-*.servers.company.net`,使用`Hostname %h `. 然后在第二个条目 `Host vded-*` 中使用 `Hostname %h.servers.company.net` 和所有其他参数,如 User、IdentityFile 等。 (2认同)

Ora*_*Dog 7

这是最简单的解决方案。它适用于所有主机,不需要 root 或访问任何 DNS/解析器系统。

添加到~/.ssh/config文件的顶部(如果尚不存在,则创建):

CanonicalizeHostname yes
CanonicalDomains servers.company.net
Run Code Online (Sandbox Code Playgroud)

文档 ( man 5 ssh_config):

规范化主机名

控制是否执行显式主机名规范化。默认值no是不执行任何名称重写并让系统解析器处理所有主机名查找。如果设置为yes,那么对于不使用ProxyCommand 的连接,ssh 将尝试使用CanonicalDomains后缀和CanonicalizePermittedCNAMEs规则规范化命令行上指定的主机名。如果CanonicalizeHostname设置为always,则规范化也适用于代理连接。

如果启用此选项,则使用新目标名称再次处理配置文件,以在匹配的HostMatch节中选取任何新配置。

  • @AdamWallner 如果您不添加`CanonicalDomains` 那么它将*仅*适用于当前网络的搜索域。如果您这样做(并且您可以列出多个),那么它将在您可能连接到的 *任何* 网络上解析*所有* 的主机名。 (2认同)