在扩展主机名上配置 SSH 通配符

在扩展主机名上配置 SSH 通配符

我想在 SSH 配置中使用通配符,以便将某个域上所有主机的默认用户名设置为特定值。但我还想为某些特定主机设置一些短名称。我期望这样的操作能够奏效:

Host *.mydomain.com
    User myusername
Host host1
    Hostname host1.mydomain.com

使用这些设置,如果我输入,ssh host1.mydomain.com它会计算为[email protected],但如果我输入,ssh host1它不会应用我的用户设置,而是看到[email protected]

有没有办法让通配符与最终扩展的主机名匹配,以便我可以输入短格式或长格式并获得相同的结果?

答案1

只需使用:

Host *.mydomain.com host1
User myusername

Host host1
Hostname host1.mydomain.com
  • 替代模式由主持人线。
  • 全部匹配主机模式被应用。
  • 如果某个选项出现多次,则仅使用第一次出现的选项

答案2

您可以简单地设置CanonicalizeHostnameyes使用别名的规范主机名重新解析 ssh_config。例如:

CanonicalizeHostname yes
Host *.mydomain.com
    User myusername

Host host1
    HostName host1.mydomain.com

或者,如果您还想重新映射主机名,则可以使用Match而不是 来Host仅匹配规范主机名。例如,在:

Match canonical host="*.mydomain.com"
    User myusername

Host host2.mydomain.com
    HostName host2.otherdomain.com

当您连接到时,不会设置用户指令host2.mydomain.com

答案3

您可以将其%h用作HostHostName.ssh/配置

Host host?
  User myusername
  Hostname %h.mydomain.com

Host host??
  User myusername
  Hostname %h.mydomain.com

Host host???
  User myusername
  Hostname %h.mydomain.com

现在你可以这样做:

  • ssh host1代替ssh host1.mydomain.com
  • ssh host10代替ssh host10.mydomain.com
  • ssh host100代替ssh host100.mydomain.com

答案4

以上方法都不适用于我。我需要以下配置

Host *.mydomain.com
    User myusername

Host host1
    CanonicalizeHostname yes
    Hostname host1.mydomain.com

相关内容