我使用.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$