So geben Sie mehrere HostName / Port-Kombinationen in .ssh / config an

10

Ich habe mehrere Notebooks und Workstations, die von mehreren Mercurial-Repositorys auf einem zentralen Server abgerufen und übertragen werden. Normalerweise .ssh/configsetze ich einen Alias:

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

... und einige weitere Optionen, Sie bekommen die Idee. Ich kann dann einfach ein hg push ssh://repo-server//hgroot/someprojectfür jedes lokale Repository ausführen und die Serveradresse und den Port an einem Ort ändern.

Für Workstations funktioniert dies einwandfrei, aber die Notebooks können entweder von innerhalb des Netzwerks oder von außerhalb auf den Server zugreifen, indem sie eine andere Adresse und einen anderen Port verwenden. Kann ich auf irgendeine Weise mehrere HostName / Port-Kombinationen angeben, damit SSH sie automatisch in der richtigen Reihenfolge versucht? Auf diese Weise können die Benutzer drücken und ziehen, ohne sich um die richtige Adresse kümmern zu müssen.

(Natürlich wäre die Verwendung eines VPN die richtige Lösung.)

Leoluk
quelle

Antworten:

5

Ich fürchte, das ist mit SSH nicht möglich.

Sie können dies möglicherweise mit der ProxyCommandOption ssh und einem benutzerdefinierten Skript umgehen, das eine TCP-Verbindung zu einem Server (mithilfe von Netcat) erstellt, je nachdem, wie / wo Ihr Notebook angeschlossen ist. Etwas in der Art von:

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

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

Dann .ssh/configwürden Sie in Ihrem folgenden benötigen:

Host repo-server
  User user143
  IdentityOnly yes
  IdentityFile ~/hgkey
  ProxyCommand path-to-script
Oliver
quelle
Ich schätze, ich werde ein Skript schreiben, das die HostNameEinträge dann ändert . Vielen Dank.
Leoluk
Dies sieht Linux-spezifisch aus. Zum Beispiel scheint / sbin / iwgetid unter WSL nicht zu existieren ...
Michael
-1

Eine andere Alternative könnte darin bestehen, ein Skript einzurichten, um den SSH-Port 22 der „richtigen“ IP an einen nicht verwendeten lokalen Port Ihres Laptops weiterzuleiten und dann dort zu ssh. Ich benutze es in einer ganzen Reihe von Situationen.

Jacopods
quelle
1
Dies ist ohne ein Beispiel überhaupt nicht klar.
Andrew Schulman