Akhil Asked: 2019-04-26 22:41:24 +0800 CST2019-04-26 22:41:24 +0800 CST 2019-04-26 22:41:24 +0800 CST ssh ControlPath 使用 ip 地址而不是 hostame %h 772 目前我将其用于控制路径 ControlPath /home/user/.ssh/sockets/ssh_mux_%h_%p_%r 如果我连接到主机名“redishost”,它会使用 redishost 创建套接字 如果我使用其 IP 地址连接到同一主机“redishost”,它会使用 IP 地址创建套接字 是否可以对所有 ssh 连接使用 ip 而不是 controlpath 中的主机名 %h ? ssh openssh 2 个回答 Voted laenkeio 2019-04-26T23:23:09+08:002019-04-26T23:23:09+08:00 这似乎是不可能的,因为您可以用来引用远程主机的唯一标记是 %h。请参阅https://man.openbsd.org/ssh_config#TOKENS。 你能透露更多关于使用 IP 地址而不是主机名的动机吗?那么也许我们可以找到解决该问题的替代方案。 Best Answer Akhil 2019-04-27T02:00:02+08:002019-04-27T02:00:02+08:00 在检查了 openssh 文档和源代码后,我发现openssh don't have any token for controlpath expression where ip address can be specified. 如果你想使用它,你可以使用我的 repo,我编辑了 openssh 的源代码并添加了令牌 %x 用于 IP 地址解析。 现在 ControlPath 变为: ControlPath /home/user/.ssh/sockets/ssh_mux_%x_%p_%r ControlPath 支持的令牌: "l", thishost, "n", host_arg, "n", host_arg, "p", portstr, "p", portstr, "x", hostip, "r", options.user, "r", options.user, "u", pw->pw_name, "u", pw->pw_name, "i", uidstr, "i", uidstr, "h", host, https://github.com/akhilin/openssh-portable/commit/a2d95e090b73f36590e8c189685ce8cea810f49a
这似乎是不可能的,因为您可以用来引用远程主机的唯一标记是 %h。请参阅https://man.openbsd.org/ssh_config#TOKENS。
你能透露更多关于使用 IP 地址而不是主机名的动机吗?那么也许我们可以找到解决该问题的替代方案。
在检查了 openssh 文档和源代码后,我发现
openssh don't have any token for controlpath expression where ip address can be specified.
如果你想使用它,你可以使用我的 repo,我编辑了 openssh 的源代码并添加了令牌 %x 用于 IP 地址解析。现在 ControlPath 变为:
ControlPath 支持的令牌:
https://github.com/akhilin/openssh-portable/commit/a2d95e090b73f36590e8c189685ce8cea810f49a