Unter Linux kann eine IPv6-Adresse am Ende eine Bereichs-ID mit einem Prozentzeichen davor haben. Beispiel: fe80::1%usb0
. SieheWarum enthält die IPv6-Adresse ein Prozentzeichen „%“?
Ich möchte einen solchen Eintrag zu meiner SSH-Konfiguration hinzufügen, aber wenn ich ihn hinzufüge HostName fe80::1%usb0
, ~/.ssh/config
erhalte ich eine Fehlermeldung:
percent_expand: unknown key %u
Antwort1
Sie müssen das Prozentzeichen verdoppeln, und zwar wie folgt:
Host vmiab
HostName fe80::1%%usb0
ssh-konfigurationhat verschiedene Ersetzungen wie %h
und %l
, und wenn Sie ein wörtliches Prozentzeichen wünschen, muss es als maskiert werden %%
.
Antwort2
Falls Sie immer noch versuchen, Proxy-Befehle auf der Kommandozeile in zsh auszuführen, finden Sie hier ein Beispiel für die Verwendung mit IPv6-Adressen
ssh -v -o "ProxyCommand sush -W \[%h\]:%p your_jump_server" your_user@aabb:aabb:aabb:aabb:aabb:aabb:aabb:0000
Sehen Sie, wie das h
Argument jetzt die Escape-Klammern hat, aber IPv6 hat keine
Antwort3
Neben dem Escapen des Prozentzeichens kann es notwendig sein, eine IPv6-Adresse in Klammern einzuschließen []
.
Dies ist erforderlich, wenn der Hostname von einem ProxyCommand verwendet wird.
Host vmiab
HostName [fe80::1%%usb]
ProxyCommand ssh my_proxy_host -W %h:%p
Oder Sie könnten den Host [%h]
in den ProxyCommand einschließen (bevorzugte Lösung)
Host vmiab
HostName fe80::1%%usb
ProxyCommand ssh my_proxy_host -W [%h]:%p
Es ist besser, die Klammern im ProxyCommand zu verwenden, da die Verwendung von Klammern im Hostnamen nur mit ProxyCommand funktioniert, ohne jedoch fehlschlägt.