IPv6 接口(至少具有可路由的 IP)通常有一个临时 IP 地址,该地址经常更改,通常用于出站连接,以提供更多隐私。
我如何告诉 ssh 不要使用此地址,而是针对给定的出站连接尝试绑定到非临时地址?
我知道我可以使用该-b
选项绑定到特定的 IP 地址,但这意味着我必须首先查找出站接口的 IP 地址。
IPv6 接口(至少具有可路由的 IP)通常有一个临时 IP 地址,该地址经常更改,通常用于出站连接,以提供更多隐私。
我如何告诉 ssh 不要使用此地址,而是针对给定的出站连接尝试绑定到非临时地址?
我知道我可以使用该-b
选项绑定到特定的 IP 地址,但这意味着我必须首先查找出站接口的 IP 地址。
在 Linux 上,ssh 需要调用 setsockopt(IPV6_ADDR_PREFERENCES) 来请求特定的地址类型。(Linux setsockopt 文档中没有提到这一点,但代码存在于内核中,并且似乎符合 RFC 5014 规范。)
由于 OpenSSH 没有任何可让您指定地址首选项的配置选项,因此它必须是像这样的hack (仅使用不同的 sockopt)。您可以尝试要求 OpenSSH 开发人员添加这样的选项,但他们通常不想添加 OpenBSD 不支持的任何操作系统功能。
编写一些脚本来获取 ; 的正确地址可能更容易
-b
。例如,如果您使用的是 Linux,则可以使用ip | jq
:或者 – 完全关闭临时地址(隐私扩展)。
但如果你想试试你的运气
LD_PRELOAD
,你可以测试一下(我根本没有测试过它;很可能它触发得太晚而没有任何效果):