SSH 配置文件,%h 大写问题 - ProxyCommand 问题

SSH 配置文件,%h 大写问题 - ProxyCommand 问题

我在 SSH 配置文件中创建了一个部分,但在尝试执行 ProxyCommand 时遇到字母大小写问题,一旦输入,SystemDevice它就会在配置文件中读回systemdevice-- 小写。它不是按照我的确切输入执行的。我做了一些研究,发现%n可能会解决我的问题,但这不适用于 ProxyCommand。percent_expand: unknown key %n如果我尝试使用它,我就会收到。

阅读手册页,它指出:

ProxyCommand 接受标记 %%、%h、%p 和 %r。

我的 SSH 配置:

Host SystemDevice*
    User test
    ProxyCommand socat UNIX:/Devices/%h -

我尝试运行时出错ssh SystemDevice1001

socat[4088] E connect(5, AF=1 "/Devices/systemdevice1001", 39): No such file or directory
ssh_exchange_identification: Connection closed by remote host

如果我更改我的配置以使用小写字母,它会很有魅力!问题是,我可以使用小写字母,但就我自己的知识而言,我很想看看是否有解决方案!我在网上找不到与此相关的任何内容。

我的操作系统:Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-119-generic x86_64)

答案1

我也刚刚遇到这个问题。似乎是 openssh 中的一个错误,我认为没有办法避免它。

我查看了 openssh 源代码,发现 main.c 中调用了“lowercase()”函数。我能想到的唯一原因是 DNS 主机名通常不区分大小写:

1038
1039         /* If canonicalization requested then try to apply it */
1040         lowercase(host);
1041         if (options.canonicalize_hostname != SSH_CANONICALISE_NO)
1042                 addrs = resolve_canonicalize(&host, options.port);
1043

稍后在“ssh_connect”中使用相同的“host”变量:

1266         /* Open a connection to the remote host. */
1267         if (ssh_connect(host, addrs, &hostaddr, options.port,
1268             options.address_family, options.connection_attempts,
1269             &timeout_ms, options.tcp_keep_alive,
1270             options.use_privileged_port) != 0)
1271                 exit(255);

最后,sshconnect.c 代码还显示 ProxyCommand 仅支持 %h、%p 和 %r:

87   expand_proxy_command(const char *proxy_command, const char *user,
88       const char *host, int port)
89   {
90           char *tmp, *ret, strport[NI_MAXSERV];
91
92           snprintf(strport, sizeof strport, "%d", port);
93           xasprintf(&tmp, "exec %s", proxy_command);
94           ret = percent_expand(tmp, "h", host, "p", strport,
95               "r", options.user, (char *)NULL);
96           free(tmp);
97           return ret;
98   }

我也需要 ProxyCommand 中的原始“大写”名称。获得它的唯一方法是删除“*”和不带 %h 的硬代码。我需要为每个主机提供一个条目...

相关内容