SSH 配置为同一域 + 别名下的多个主机设置默认用户

SSH 配置为同一域 + 别名下的多个主机设置默认用户

此主题:在您的 ssh 配置中,是否可以为同一域中的多台机器设置一个主机条目解释了我的问题的“别名”部分,我想知道是否可以设置默认用户名以及使用域别名,所以我只需写类似这样的内容:

ssh subdomain

我的 /etc/resolv.conf 文件中有以下内容:

search my_cool_domain.com

以及我的 ssh_config 文件中的以下内容:

Host *.my_cool_domain.com
    User deploy

因此我认为以下方法可行:

ssh subdomain

subdomain.my_cool_domain.com将尝试与用户连接deploy但由于某种原因,这不起作用。

尽管以下内容:

ssh deploy@subdomain确实有效,并且: ssh subdomain.my_cool_domain.com

有什么想法可以让我以优雅的方式修复此问题(如果可能的话)?

答案1

关键字“Host”后面的模式无论如何都无法解析为真实主机名,因此您无法检测到您的 DNS 查找配置的子域实际上是您的主域的子域。

来自 ssh_config 手册页 -

         ... The host is the hostname argument given on the command line (i.e. the
         name is not converted to a canonicalized host name before match-
         ing).

您的替代方案是

  1. 使用“Host *”并为所有主机设置默认用户名。
  2. 当/如果您的子域名有某些前缀,请使用“Host pfx1* pfx2*”。
  3. 配置您的 shell 补全并始终使用完整的主机名“Host *.mydomain”和“ssh subdomain”,将其补全为“ssh subdomain.mydomain”。
  4. Shell 别名和函数也可用于自动添加“.mydomain”部分。例如,“ssh-alias subdomain”是“ssh subdomain.mydomain”的别名。

答案2

只需使用正确设置 ssh_config + resolv.conf 的组合解决方案:

1. 设置 /etc/resolv.conf

search my_cool_domain.com

2. 设置 ssh_config 以映射主机和用户

Host subdomain1
    User deploy1

Host subdomain2
    User deploy2

这样ssh subdomain1将使用所需的用户deploy1,并且主机将通过以下方式获得其全名:resolv.conf

相关内容