Aquí está el problema:estoy tratando de SSH en un sistema al que se puede acceder desde al menos 3 redes diferentes, a veces directamente, a veces a través de un proxy, en diferentes momentos.
Conectarse directamente es mucho más rápido y más confiable que conectarse a través de un host intermedio, que nuevamente es mucho más rápido y más confiable que conectarse a través de Internet en general, por lo que me gustaría que SSH intente conectarse de 3 maneras diferentes de manera prioritaria, eligiendo el primero que tiene éxito.
Todos son la misma máquina, obviamente, por lo que no quiero seguir teniendo que elegir manualmente entre 3 alias diferentes según desde dónde me conecte.
Sin embargo, no puedo encontrar ningún mecanismo para resolver esto. ¿Es posible hacer esto en absoluto, o no?
Si no, ¿qué hace la gente en general en tal situación?
Respuesta aceptada:
No use alias para ssh
conexiones! Use un ssh_config
adecuado en ~/.ssh/config
. Tiene algunas características verdaderamente poderosas.
Digamos que puede identificar en qué red se encuentra. Por ejemplo, usando su IP, que se puede extraer, por ejemplo, usando hostname -I
. Así que escribamos algo de configuración:
# in network1 I am getting ip from "10.168.*.*" and I need to connect through proxy
Match Host myalias Exec hostname -I | grep 10\.168\.
Hostname real-host-IP
ProxyCommand ssh -W %h:%p proxy-server
# in network2 I am getting IP from "192.168.*.*" and I do not need a proxy
Match Host myalias Exec hostname -I | grep 192\.168\.
Hostname real-host-IP
# in network3 I am getting something else
Creo que entendiste el punto...