如何將帶有範圍 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,否則會失敗。

相關內容