Как добавить адрес IPv6 с идентификатором области в файл конфигурации ssh?
В Linux адрес IPv6 может иметь идентификатор области в конце со знаком процента перед ним. Например: fe80::1%usb0
, См. Почему в адресе IPv6 есть знак процента "%"?
Я хочу добавить такую запись в мою конфигурацию SSH, но если я добавлю HostName fe80::1%usb0
в ~/.ssh/config
Я получаю ошибку:
percent_expand: unknown key %u
3 ответа
Вам нужно удвоить знак процента, вот так:
Host vmiab
HostName fe80::1%%usb0
ssh-config имеет различные замены, такие как %h
а также %l
и если вы хотите буквальный знак процента, он должен быть экранирован как %%
,
Если вы все еще пытаетесь выполнять прокси-команды в командной строке в 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 их нет.
Помимо экранирования знака процента, может потребоваться заключить адрес 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, но без сбоев.