Voici le problème :j'essaie de me connecter en SSH à un système accessible depuis au moins 3 réseaux différents, parfois directement, parfois via un proxy, à des moments différents.
La connexion directe est beaucoup plus rapide et plus fiable que la connexion via un hôte intermédiaire, qui est encore une fois beaucoup plus rapide et plus fiable que la connexion via Internet général, donc j'aimerais que SSH tente de se connecter de 3 manières différentes de manière prioritaire, en choisissant le premier qui réussit.
Ce sont tous la même machine, évidemment, donc je ne veux pas continuer à devoir choisir manuellement entre 3 alias différents selon l'endroit d'où je me connecte.
Cependant, je ne trouve aucun mécanisme pour résoudre ce problème. Est-il possible de le faire du tout, ou non ?
Sinon, que font généralement les gens dans une telle situation ?
Réponse acceptée :
Ne pas utiliser d'alias pour ssh
Connexions! Utilisez un ssh_config
approprié dans ~/.ssh/config
. Il possède des fonctionnalités vraiment puissantes.
Disons que vous pouvez identifier dans quel réseau vous vous trouvez. Par exemple en utilisant votre adresse IP, qui peut être extraite par exemple en utilisant hostname -I
. Écrivons donc une configuration :
# 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
Je crois que vous avez compris…