¿Es posible tener múltiples alias de host SSH?

Tengo una computadora portátil que, obviamente, puede estar dentro o fuera de la networking de mi hogar a veces. Cuando necesito SSH en una máquina dentro de mi networking, la connection es bastante sencilla:

localhost $ ssh machinelearning 

Cuando bash acceder a la máquina desde fuera de mi networking, entonces necesito conectarme a mi enrutador, luego SSH desde allí:

 localhost $ ssh router.mytotallyuniquedomain.com router $ ssh machinelearning 

Recuerdo que había un atajo para hacer el último command en ~/.ssh/config , pero por el momento no puedo recordar de qué se trata.

¿Hay alguna forma de que proporcione múltiples nombres de host o types de conexiones para que cuando haga esto:

 $ ssh machinelearning 

SSH primero intentará conectarse al host machinelearning en la networking local y luego intentará hacer un túnel a través del router.mytotallyuniquedomain.com , todo sin tener que escribir el nombre del host largo?

Método n. ° 1: ProxyCommand y netcat

Uso esta configuration en mi $HOME/.ssh/config para facilitar esto:

 Host intserver1-o intserver2-o intserver3-o ProxyCommand ssh userR@extserver.mydom.com nc `echo %h|sed 's/-o//'` %p 

Entonces puedo ssh intserver2-o desde cualquier lugar y entrar en este server interno. Cuando estoy en casa en la LAN, uso ssh intserver1 .

NOTA: El truco anterior requiere que netcat ( nc ) esté instalado en el server extserver1.

Método n. ° 2: ssh nested

Alternativamente, puede utilizar este método también:

 $ ssh -t -l gatewayuser gatewayserver "ssh -l serveruser internalserver" 

Básicamente estás anidando llamadas SSH en este método.

Método n. ° 3: ProxyCommand y ssh -W

Con las versiones más recientes de SSH (5.4+) puede usar ssh lugar de nc través del -W .

 Host TARGETHOST ProxyCommand ssh -W %h:%p PROXYHOST 

El %h & %p son macros para el puerto de nombre de host que se usaron para TARGETHOST .