我有许多服务器,它们都以相同的 servers.company.net 结尾,例如 vded-xx-001.servers.company.net,我想知道是否可以这样,我只需输入 vded-xx-001 并让它自动附加 servers.company.net?
所以我想输入
ssh user@vded-xx-001
并让它真正连接到
ssh [email protected]
我已尝试将我的 DNS 搜索域设置为 /etc/network/interfaces 中的 servers.company.net,但这并未实现预期的结果。
谁能给我指明正确的方向?
提前致谢
答案1
可能你已经解决了这个问题,但也许以后它可以帮助别人:你不需要弄乱你的resolv.conf
,只需在你的中使用类似这样的东西~/.ssh/config
:
Host vded-*-001 test-*-something-fixed-*
HostName %h.servers.company.net
User someusername
因此稍后您就可以使用:
ssh vded-alotofstuff-001
ssh vded-somethingels-001
ssh test-02-something-fixed-somethingelse
答案2
这是最简单的解决方案。它适用于所有主机,不需要 root 权限或访问任何 DNS/解析器系统。
添加到文件顶部~/.ssh/config
(如果不存在则创建):
CanonicalizeHostname yes
CanonicalDomains servers.company.net
文档 (man 5 ssh_config
):
规范化主机名
控制是否执行显式主机名规范化。默认为不,则不执行任何名称重写,并让系统解析器处理所有主机名查找。如果设置为是的然后,对于不使用代理命令,ssh 将尝试使用命令行中指定的主机名进行规范化规范域后缀和规范化允许的 CNAME规则。如果规范化主机名被设定为总是,那么规范化也适用于代理连接。
如果启用此选项,则使用新的目标名称再次处理配置文件,以选择匹配的任何新配置主持人和匹配节。
答案3
~/.ssh/config
是的,您可以通过创建一个名为并输入以下内容的配置文件来执行此操作:
Host vded-xx-001
User user
Port 22
HostName vded-xx-001.servers.company.net
现在您只需输入此内容(您甚至不再需要用户名):
$ ssh vded-xx-001
这也适用于命令行实用程序scp
:
$ scp filename vded-xx-001:/path/
答案4
如果你使用 SSH 身份 - 并且有那么多服务器值得一看 - 那么正如 OrangeDog 所说,设置 CanonicaliseHostname 和 CanonicaliseDomains 也将启用与已知主机中的 @cert-authority 条目的匹配
known_hosts 条目 @cert-authority *.example.com ssh-rsa AAAddadfkjaeio...
如果没有 Canonicalise 选项,您需要使用“ssh host.example.com”
使用 Canonicalise 选项“ssh myhost”将会匹配。
如果代表允许的话,我会将此作为评论添加到 OrangeDogs 的回答中...