ssh_config,搜索域中的服务器的主机部分

ssh_config,搜索域中的服务器的主机部分

我的 DNS 搜索域中有 test.example.com。当我 时ssh server01,它会按预期连接到我的服务器。但是它不遵循我的 ssh_config 规则,因为它不匹配:

Host *.test.example.com 
User djimenez
ForwardAgent yes

没问题,我会添加一张外卡!

Host *
User djimenez
ForwardAgent yes

但是,这适用于每个主机。不仅限于短 DNS 名称(非 FQDN,如果您愿意的话)。

我的问题是,有没有办法创建仅匹配短 DNS 名称的主机规则?或者更好的是,如果有某种神奇的方法让 ssh 从 DNS 获取 FQDN(如果我有多个搜索域)。

答案1

允许使用的唯一两个通配符主持人规范是*匹配任何字符串,以及?匹配任何单个字符。您还可以将!模式添加到前面以否定匹配的含义,以便它适用于与模式其余部分不匹配的主机值。

因此,像这样的规则:

Host !*.*
    SomeOption...

应适用于任何不包含句点的主机名值。

您还可以为每个模式设置多个模式主持人行,以防您希望规则应用于主机名的长格式:

Host !*.* *.test.example.com
    SomeOption...

答案2

手册页ssh_config指出:“主机是命令行上给出的主机名参数(即,在匹配之前,该名称不会转换为规范化的主机名)。”

解决这个问题的方法是创建一个包装脚本,首先将你提供的主机名扩展为 FQDN(如果可能),然后将其传递给 ssh,例如https://serverfault.com/questions/567272/expand-hostnames-to-fqdn-before-calling-ssh

相关内容