Comment spécifier plusieurs combinaisons HostName / Port dans .ssh / config

10

J'ai plusieurs ordinateurs portables et postes de travail qui tirent et poussent à partir de plusieurs référentiels Mercurial sur un serveur central. J'utilise généralement .ssh/configpour définir un alias:

Host repo-server
HostName server.somedomain
User user143
IdentityOnly yes
IdentityFile ~/hgkey
Port 156

... et quelques autres options, vous avez l'idée. Je peux alors simplement faire un hg push ssh://repo-server//hgroot/someprojectsur chaque référentiel local, et je peux changer l'adresse du serveur et le port en un seul endroit.

Pour les postes de travail, cela fonctionne bien, mais les ordinateurs portables peuvent accéder au serveur depuis l'intérieur du réseau ou depuis l'extérieur, en utilisant une adresse et un port différents. Existe-t-il un moyen de spécifier plusieurs combinaisons HostName / Port afin que SSH les essaie automatiquement dans l'ordre? De cette façon, les utilisateurs pouvaient pousser et tirer sans avoir à se soucier de la bonne adresse.

(bien sûr, utiliser un VPN serait la solution la plus correcte)

leoluk
la source

Réponses:

5

Je crains que ce ne soit pas possible avec SSH.

Vous pouvez éventuellement contourner ce problème en utilisant l' ProxyCommandoption de ssh, ainsi qu'un script personnalisé qui crée une connexion TCP à un serveur (à l'aide de netcat), selon la façon / l'endroit où votre ordinateur portable est connecté. Quelque chose dans le sens de:

#!/bin/bash
SSID=$(/sbin/iwgetid wlan0 -r)

case "$SSID" in
net1)
  nc <host1> <port1>
  ;;
net2)
  nc <host2> <port2>
  ;;
*)
  nc <host3> <port3>
  ;;
esac

Ensuite, dans votre .ssh/config, vous auriez besoin des éléments suivants:

Host repo-server
  User user143
  IdentityOnly yes
  IdentityFile ~/hgkey
  ProxyCommand path-to-script
Oliver
la source
Je suppose que j'écrirai alors un script qui modifie les HostNameentrées. Je vous remercie.
leoluk
Cela semble spécifique à Linux .. par exemple, / sbin / iwgetid ne semble pas exister sous WSL ...
Michael
-1

Une autre alternative pourrait être de mettre en place un script pour transférer le port ssh 22 de la «bonne» ip vers un port local inutilisé de votre ordinateur portable, puis ssh là-bas. Je l'utilise dans un certain nombre de situations.

jacopodes
la source
1
Ce n'est pas clair du tout sans un exemple.
Andrew Schulman,