如何将具有范围 ID 的 IPv6 地址添加到 ssh 配置文件中?

如何将具有范围 ID 的 IPv6 地址添加到 ssh 配置文件中?

在 Linux 上,IPv6 地址可以在末尾有一个范围 ID,前面有一个百分号。例如:fe80::1%usb0。请参阅为什么 IPv6 地址中有一个百分号‘%’?

我想在我的 ssh 配置中添加这样的条目,但如果我添加HostName fe80::1%usb0~/.ssh/config,我会收到错误:

percent_expand: unknown key %u

答案1

您需要将百分号加倍,如下所示:

Host vmiab
    HostName fe80::1%%usb0

ssh-配置有各种替换,例如%h%l,如果您想要一个文字百分号,则必须将其转义为%%

答案2

如果你仍在尝试在 zsh 的命令行上执行代理命令,这里有一个如何使用 ipv6 地址的示例

ssh -v -o "ProxyCommand sush -W \[%h\]:%p your_jump_server" your_user@aabb:aabb:aabb:aabb:aabb:aabb:aabb:0000

看看参数h现在有转义括号,但 ipv6 没有任何

答案3

除了转义百分号之外,可能还需要将 IPv6 地址括在括号中[]
当主机名由 ProxyCommand 使用时,这是必需的。

Host vmiab
    HostName [fe80::1%%usb]
    ProxyCommand ssh my_proxy_host -W %h:%p

或者您可以将主机包含[%h]在 ProxyCommand 中(首选解决方案

Host vmiab
    HostName fe80::1%%usb
    ProxyCommand ssh my_proxy_host -W [%h]:%p

最好在 ProxyCommand 中使用括号,因为在主机名中使用括号仅适用于 ProxyCommand,如果不使用则会失败。

相关内容