为什么 ssh 无法从 .ssh/config 扩展 %h?这曾经可以工作,现在除了在 RHEL 机器上以外仍然有效。想知道这是什么原因造成的。是否有某个设置告诉 ssh 不要扩展 %h?
我的 .ssh/config 中有类似这样的内容:
Host *.foo
HostName %h.mydomain.com
在 RHEL 机器上,此功能不起作用,我得到了这个:
$ ssh -vvvv bar.foo
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /home/zsimic/.ssh/config
debug1: Applying options for *.foo
debug1: Applying options for *.foo
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
ssh: Could not resolve hostname %h.mydomain.com: Name or service not known
答案1
您正在使用 OpenSSH 5.3;%h
仅在 OpenSSH 中引入5.6:
自 OpenSSH 5.5 以来的变化 ========================= * 将 %h 扩展为 ssh_config 主机名选项中的主机名。虽然这 听起来没用,但对于处理不合格的 主机名: 主持人 *。* 主机名 %h 主持人 * 主机名 %h.example.org
答案2
man ssh_config
没有提到将%h
在子句中展开HostName
。我正在使用openssh5.9p1
编辑:确实如此,但我错过了
如果设置某些代理服务器(仅限本地的代理服务器即可)不会困扰您,那么也许ProxyCommand
可以使用一些解决方法。
或者,您可以枚举中的几个主机名.ssh/config
。