我正在使用带有代理命令通过堡垒主机跳转到我的目标主机。具体来说,它ProxyCommand
使用云服务 CLI,获取我最初传递的主机名 / 用户 / 端口,在数据库中查找它们,并通过堡垒将我连接到主机。它基本上看起来像这样:
Host host-*
ProxyCommand /bin/the-cli %h %r %p
问题在于目标主机名数据库区分大小写,即host-XyZ
,但 SSH 始终将我最初输入的主机名 ( %h
) 转换为小写字符串。因此最终结果如下:
$ ssh host-XyZ
Bastion service: there are no targets with name 'xyz'
我可以阻止 SSH 执行此操作吗?我没有看到任何有关将远程主机名转换为小写的文档。
答案1
请使用 %n。根据 ssh_config 手册
%n The original remote hostname, as given on the command line.
OpenSSH 将 %h 小写,无法禁用。
13f97b228大约在 2014 年更改了与 CanonicalizeHostname 和 ssh_config 解析相关的一些内容。它还会将主机字符串变为小写。大概是为了在解析名称之前允许不区分大小写的替换。
DNS 应该或多或少不区分大小写,这就是他们可以消除这种情况的原因。