Verwenden des SSH-Proxy-Befehls basierend auf dem aktuellen Netzwerk

510
Yotam

Ich möchte von meinem Laptop von zu Hause oder vom Büro aus auf meinen Heimcomputer zugreifen können. Im Büro muss ich ein Gateway verwenden. Dafür habe ich einen proxycommandEintrag in meinem hinzugefügt, .ssh/configder vom Büro aus gut funktioniert. Wenn ich dies jedoch von zu Hause aus nutzen möchte, möchte ich mich nicht auf das Office-Gateway verlassen. Gibt es eine Möglichkeit, dies zu automatisieren?

2

1 Antwort auf die Frage

3
ghoti

Ja und nein.

Zuerst die Nr. Es gibt nichts, was Sie in Ihre Datei ~ / .ssh / config einfügen können, wodurch verschiedene Einstellungen aktiviert werden, die auf externen Faktoren basieren, beispielsweise auf dem Netzwerk, in dem Sie sich befinden, ob eine Datei vorhanden ist usw. Die Konfigurationsdatei von SSH ist eine statische Datei.

Nun das ja. Sie können etwas "hacken". Es wird wahrscheinlich nicht unglaublich hübsch sein, aber es kann funktionieren.

Überlegen Sie, wie ProxyCommand funktioniert. Es führt eine Befehlszeile aus und ersetzt in bestimmten Zeichenfolgen den Printf-Stil. In dieser Befehlszeile können Sie Ihr Login eingeben. Zum Beispiel haben Sie vielleicht so etwas in Ihrem Laptop zur Verwendung im Büro:

host athome ProxyCommand ssh -x -a -q gateway nc athome.dyndns.org 22 

Der Befehl startet einen sshBefehl, der eine Verbindung zu gatewaydiesem Server herstellt und auf diesem Server startet netcat, um eine Verbindung zu Ihrem tatsächlichen Ziel herzustellen. Anstatt ssh auszuführen, können Sie ein Shell-Skript verwenden. Zum Beispiel mit diesem in Ihrer .ssh/configDatei:

host athome ProxyCommand bin/customconnect athome.dyndns.org 

Sie könnten ein ~/bin/customconnectSkript erstellen :

#!/bin/sh  if /sbin/ifconfig -a | grep -q 'inet 192\.168\.'; then nc $1 22 else ssh -x -a -q gateway nc $1 22 fi 

192.168Wenn Sie davon ausgehen, dass Ihr Netzwerk zu Hause beginnt und Ihr Netzwerk im Büro nicht, wird der entsprechende ProxyCommand vom Skript ausgewählt .

Wenn Sie andere dynamische Funktionen wünschen, z. B. einen anderen Hostnamen basierend auf dem Netzwerk auswählen, können Sie dies natürlich auch zum Skript hinzufügen.

Beachten Sie, dass diese Lösung nicht ohne Kosten ist. Normalerweise startet SSH Ihren ProxyCommand direkt. Wenn Sie diese Lösung verwenden, wird für jede Verbindung ein zusätzlicher Prozess ausgeführt, da ssh eine Shell startet, die wiederum einen anderen Prozess startet.