![HostName 中 ssh 配置中的占位符](https://linux22.com/image/220127/HostName%20%E4%B8%AD%20ssh%20%E9%85%8D%E7%BD%AE%E4%B8%AD%E7%9A%84%E5%8D%A0%E4%BD%8D%E7%AC%A6.png)
我试图简化以下部分:
Host sandbox*
Port 22
User myUser
ProxyCommand=nc -X 5 -x gateway.test.io:1080 %h %p
Host sandbox9
HostName 1.0.9.10
Host sandbox10
HostName 1.0.10.10
Host sandbox11
HostName 1.0.11.10
我读到,我可以在主机名中使用 %h,它看起来像这样:
Host sandbox*
Port 22
User myUser
ProxyCommand=nc -X 5 -x gateway.test.io:1080 %h %p
HostName 1.0.%h.10
但是当我尝试使用 ssh 时出现以下错误:
❯ ssh sandbox9
nc: connection failed, SOCKS error 8
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
ChatGPT 首先告诉我第一种方法应该可行,但随后告诉我:
%h 占位符不能直接在 SSH 配置文件的 HostName 指令中使用变量来替换主机名。不支持在此特定指令中使用占位符。
难道我做错了什么?
答案1
可能在您的 OpenSSH 客户端版本中,%h
占位符没有作为原始主机被拦截,而是被%n
占位符替换。
尝试使用占位符进行相同的配置%n
:
Host sandbox*
Port 22
User myUser
ProxyCommand=nc -X 5 -x gateway.test.io:1080 %n %p
您可以使用以下命令确定您的 OpenSSH 客户端版本ssh -V