為什麼 ssh 無法擴充 .ssh/config 中的 %h 變數?

為什麼 ssh 無法擴充 .ssh/config 中的 %h 變數?

為什麼 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.

相關內容