目前我正在使用它作为控制路径
ControlPath /home/user/.ssh/sockets/ssh_mux_%h_%p_%r
如果我连接到主机名“redishost”,它会使用redishost创建套接字
如果我使用其IP地址连接到同一主机“redishost”,它会创建带有IP地址的套接字
是否可以对所有 ssh 连接使用 ip 而不是 controlpath 中的主机名 %h ?
答案1
这似乎不可能,因为可以用来引用远程主机的唯一标记是 %h。看https://man.openbsd.org/ssh_config#TOKENS。
您能否透露更多关于使用 IP 地址而不是主机名的动机?那么也许我们可以找到该问题的替代解决方案。
答案2
检查 openssh 文档和源代码后,我发现openssh don't have any token for controlpath expression where ip address can be specified.
如果您想使用它,您可以使用我的存储库,我编辑了 openssh 源代码并添加了用于 ip 地址解析的令牌 %x 。
现在 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