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 ssh
Befehl, der eine Verbindung zu gateway
diesem 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/config
Datei:
host athome ProxyCommand bin/customconnect athome.dyndns.org
Sie könnten ein ~/bin/customconnect
Skript 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.168
Wenn 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.