HostName 中 ssh 配置中的占位符

HostName 中 ssh 配置中的占位符

我试图简化以下部分:

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

相关内容