在调用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 

它在searchpath上的分辨率变成相同的fqdn。

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

也许你可以使用host命令:

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

把它放到一个shell脚本中(用“$ 1”replace“foo”)和exec ssh。

ssh_config联机帮助页面回答了这个问题:

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

换句话说,它不工作,因为它不这样工作。

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

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