有没有办法防止 SSH 将主机名小写?

有没有办法防止 SSH 将主机名小写?

我正在使用带有代理命令通过堡垒主机跳转到我的目标主机。具体来说,它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 应该或多或少不区分大小写,这就是他们可以消除这种情况的原因。

相关内容