В Linux адрес IPv6 может иметь идентификатор области действия в конце со знаком процента перед ним. Например: 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, но без него приводит к ошибке.