Hier ist das Problem:Ich versuche, mich per SSH in ein System einzuloggen, auf das von mindestens 3 verschiedenen Netzwerken aus zu unterschiedlichen Zeiten zugegriffen werden kann – manchmal direkt, manchmal über einen Proxy.
Eine direkte Verbindung ist viel schneller und zuverlässiger als eine Verbindung über einen Zwischenhost, was wiederum viel schneller und zuverlässiger ist als eine Verbindung über das allgemeine Internet zuerst gelingt das.
Sie sind offensichtlich alle die gleiche Maschine, also möchte ich nicht ständig manuell zwischen 3 verschiedenen Aliasen wählen müssen, je nachdem, von wo aus ich mich verbinde.
Ich kann jedoch keinen Mechanismus finden, um dies zu lösen. Ist das überhaupt möglich oder nicht?
Wenn nicht, was tun Menschen in einer solchen Situation im Allgemeinen?
Akzeptierte Antwort:
Verwenden Sie keine Aliase für ssh
Verbindungen! Verwenden Sie eine geeignete ssh_config
in ~/.ssh/config
. Es hat einige wirklich leistungsstarke Funktionen.
Nehmen wir an, Sie können erkennen, in welchem Netzwerk Sie sich befinden. Zum Beispiel mit Ihrer IP, die zum Beispiel mit hostname -I
gezogen werden kann . Schreiben wir also eine Konfiguration:
# 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
Ich glaube, Sie haben es verstanden …