在调用 ssh 之前将主机名扩展为 fqdn?

在调用 ssh 之前将主机名扩展为 fqdn?

我利用 .ssh/config 文件根据子域的特定部分适当地设置我的用户名,例如

Host *widgetshop.com*
   User foobar
   ControlMaster auto
   ControlPath ~/.ssh/socket-%r@%h:%p

Host *
   ControlMaster auto
   ControlPath ~/.ssh/socket-%r@%h:%p

如果我这样写的话就会有效:

ssh foo.widgetshop.com

但如果我这样写就不起作用:

ssh foo

在搜索路径解析后,其变为相同的 fqdn。

有人有办法在调用 ssh 之前扩展短名称,或者有其他方法吗?

答案1

也许您可以使用以下host命令:

ssh $(host -t A  foo | cut -f1 -d" ")

将其放入 shell 脚本(将“foo”替换为“$1”)并执行 ssh。

答案2

从 OpenSSH 6.5 开始,您可以使用CanonicalizeHostnamessh_config 中的选项执行此操作。以下示例应该可以满足您的要求:

CanonicalizeHostname yes
CanonicalDomains widgetshop.com

Host *.widgetshop.com
     User foobar

答案3

ssh_config 手册页回答了这个问题:

主机是命令行中给出的主机名参数(即,在匹配之前,该名称不会转换为规范化的主机名)。

换句话说,它不起作用,因为它不以那种方式运作。

答案4

请参阅我的“替代方法”)

mbp:~ alexus$ grep f9 /etc/hosts
XX.XXX.XX.XXX   f9
mbp:~ alexus$ ssh f9 hostname
f9.XXX.org
mbp:~ alexus$ 

相关内容