En Linux, una dirección IPv6 puede tener un ID de alcance al final con un signo de porcentaje antes. Por ejemplo: fe80::1%usb0
. Ver¿Por qué hay un signo de porcentaje '%' en la dirección IPv6?
Quiero agregar dicha entrada a mi configuración ssh, pero si la agrego HostName fe80::1%usb0
, ~/.ssh/config
aparece un error:
percent_expand: unknown key %u
Respuesta1
Necesitas duplicar el signo de porcentaje, así:
Host vmiab
HostName fe80::1%%usb0
configuración sshtiene varias sustituciones como %h
y %l
, y si desea un signo de porcentaje literal, debe utilizar el escape como %%
.
Respuesta2
En caso de que todavía estés intentando ejecutar comandos proxy en la línea de comandos en zsh, aquí tienes un ejemplo de cómo usarlo con direcciones ipv6.
ssh -v -o "ProxyCommand sush -W \[%h\]:%p your_jump_server" your_user@aabb:aabb:aabb:aabb:aabb:aabb:aabb:0000
Vea cómo el h
argumento ahora tiene corchetes escapados pero el ipv6 no tiene ninguno
Respuesta3
Además del carácter de escape del signo de porcentaje, puede ser necesario incluir una dirección ipv6 entre corchetes []
.
Es necesario cuando un ProxyCommand utiliza el nombre de host.
Host vmiab
HostName [fe80::1%%usb]
ProxyCommand ssh my_proxy_host -W %h:%p
O puede incluir el host [%h]
en ProxyCommand (solución preferida)
Host vmiab
HostName fe80::1%%usb
ProxyCommand ssh my_proxy_host -W [%h]:%p
Es mejor usar los corchetes en ProxyCommand, porque usar corchetes en el nombre de host solo funciona con ProxyCommand, pero falla sin él.