¿Es posible tener varios alias de host SSH?

¿Es posible tener varios alias de host SSH?

Tengo una computadora portátil que, obviamente, a veces puede estar dentro o fuera de mi red doméstica. Cuando necesito conectarme por SSH a una máquina dentro de mi red, la conexión es bastante sencilla:

localhost $ ssh machinelearning

Cuando intento acceder a la máquina desdeafuerade mi red, luego necesito conectarme a mi enrutador, luego SSH desde allí:

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

Recuerdo que había un atajo para ejecutar el último comando en ~/.ssh/config, pero por el momento no recuerdo cuál es.

¿Hay alguna manera de proporcionar varios nombres de host o tipos de conexiones para que cuando haga esto:

$ ssh machinelearning

SSH primero intentará conectarse al machinelearninghost en la red local y luego intentará hacer un túnel a través de router.mytotallyuniquedomain.com, ¿todo sin que tenga que escribir el nombre de host largo?

Respuesta1

Método n.º 1: ProxyCommand y netcat

Utilizo esta configuración en mi $HOME/.ssh/configpara facilitar esto:

Host intserver1-o intserver2-o intserver3-o
    ProxyCommand ssh [email protected] nc `echo %h|sed 's/-o//'` %p

Luego puedo ssh intserver2-odesde donde sea y entro en este servidor interno. Cuando estoy en casa en la LAN uso ssh intserver1.

NOTA:El truco anterior requiere netcat ( nc) instalado en extserver1.

Método #2: ssh anidado

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

$ 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 nuevas de SSH (5.4+), puede usarlo sshen lugar de hacerlo nca través del -Wconmutador.

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

Los %h& %pson macros para el puerto del nombre de host que se utilizaron para TARGETHOST.

información relacionada