![我可以将 SSH 别名用作主机名的一部分吗?](https://linux22.com/image/1364927/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%B0%86%20SSH%20%E5%88%AB%E5%90%8D%E7%94%A8%E4%BD%9C%E4%B8%BB%E6%9C%BA%E5%90%8D%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%E5%90%97%EF%BC%9F.png)
我在一个域下有一堆我经常连接的机器;
apollo.my.university.edu
hades.my.university.edu
zeus.my.university.edu
我对每台机器都使用相同的配置设置。我不需要在我的 中输入所有配置.ssh/config
,
Host apollo
Hostname apollo.my.university.edu
Host hades
Hostname hades.my.university.edu
Host zeus
Hostname zeus.my.university.edu
有没有类似 makefile 的方法,可以使用别名同时完成所有主机名?比如
Host apollo hades zeus
Hostname *.my.university.edu
答案1
尝试
Host apollo hades zeus
Hostname %h.my.university.edu
如果我读得man ssh_config
正确的话,这应该可以实现你想要的效果。
HostName
Specifies the real host name to log into. This can be used to specify nicknames
or abbreviations for hosts. If the hostname contains the character sequence
`%h', then this will be replaced with the host name specified on the command
line (this is useful for manipulating unqualified names). The default is the
name given on the command line. Numeric IP addresses are also permitted (both
on the command line and in HostName specifications).
答案2
除了使用ssh_config
demure 所示的方法外,您还可以让 DNS 查找在没有其他匹配项时考虑您的域。为此,请将以下内容添加到文件中/etc/resolv.conf
:
search my.university.edu
这样,您甚至不需要将主机添加到~/.ssh/config
。ssh zeus
解析器会为您找到合适的主机。由于它发生在解析器级别,因此它也适用于其他程序,例如curl
和 Firefox。
请注意,像 NetworkManager 这样的程序会覆盖resolv.conf
。对于 NetworkManager,您需要更改搜索域名设置为my.university.edu
。
文档: