
Quiero acceder a algunas máquinas muy similares que están en una red privada: A
, B
, C
. He configurado un JumpHost J1
y configuré la configuración para que lo usen:
Host J1
HostName 123.123.123.123
User ciprian
Host A B C
HostName %h
User ciprian
ProxyJump J1
LocalForward 8501 localhost:8501
Ahora estoy configurando un segundo JumpHost J2
y me gustaría conectarme a las mismas máquinas a través de J1
o J2
. ¿Hay alguna manera de escribir el archivo de configuración de modo que si la máquina tiene J1
el nombre, salte J1
, o si lo tiene J2
, salte J2
? Por supuesto, sin especificar manualmente coincidencias exactas :)
Puedo escribir la configuración de esta manera:
# ...
Host *-J1
ProxyJump J1
Host *-J2
ProxyJump J2
Host A* B* C*
# --- Which Host name? ---
User ciprian
# ...
entonces, si doy ssh A-J1
, retomará la configuración para saltar a través de J1. Sin embargo, cuando analiza la definición relacionada con A*
, ya no puedo especificar HostName
, ya que %h
se resolvería en A-J1
, y me gustaría que se resuelva solo en A
.
Creo que se puede lograr algo de magia con CanonicalizeHostName
y CanonicalizePermittedCNAMEs
, pero no estoy seguro de cómo.
Respuesta1
Puedes usar ProxyCommand y algún script de shell menor:
Host *-prefix1
ProxyCommand ssh -q jump1 'H="%h"; nc ${H%%-prefix1} %p || echo "ProxyCommand failed! >&2"'
Host *-prefix2
ProxyCommand ssh -q jump2 'H="%h"; nc ${H%%-prefix2} %p || echo "ProxyCommand failed! >&2"'