此主题:在您的 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).
您的替代方案是
- 使用“Host *”并为所有主机设置默认用户名。
- 当/如果您的子域名有某些前缀,请使用“Host pfx1* pfx2*”。
- 配置您的 shell 补全并始终使用完整的主机名“Host *.mydomain”和“ssh subdomain”,将其补全为“ssh subdomain.mydomain”。
- 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