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

Другие вопросы по тегам