Как добавить адрес 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, но без сбоев.