ssh ControlPath 使用 IP 地址而不是主机名 %h

ssh ControlPath 使用 IP 地址而不是主机名 %h

目前我正在使用它作为控制路径

  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

相关内容