Ich habe einen Server mit dem Namen gamma
, der ständig in Betrieb ist. Manchmal verbinde ich mich von zu Hause aus damit. In diesem Fall verwende ich die öffentliche IP-Adresse 55.22.33.99
. Manchmal verbinde ich mich damit, wenn ich auf der Arbeit bin, und anstatt meine Pakete unnötig herumzuschleudern, verbinde ich mich über die lokale IP - Adresse 192.168.1.100
.
Im Moment habe ich sie in zwei verschiedene Einträge aufgeteilt ~/.ssh/conf
Host gamma-local
HostName 192.168.1.100
Port 22
User andreas
Host gamma-remote
HostName 55.22.33.99
Port 12345
User andreas
Wenn ich also auf der Arbeit bin, muss ich nur tippen ssh gamma-local
und bin dabei. Wenn ich zu Hause bin (oder irgendwo anders auf der Welt), renne ich ssh gamma-remote
.
Wenn ich mich mit dem Server verbinde, müsste ich lieber keinen anderen Namen eingeben, je nachdem, wo ich mich befinde. Ich würde lieber, dass dieser Teil automatisch ausgeführt wird. Zum Beispiel habe ich in einigen Fällen automatisierte Skripte, die eine Verbindung herstellen und nicht wissen, wo ich bin.
Es gibt eine Frage, mit der dieses Problem gelöst werden kann, indem zunächst mit einem Bash-Skript versucht wird, eine Verbindung zum lokalen Skript herzustellen. Wenn dies nicht der Fall ist, versuchen Sie, eine Verbindung zur Remote-IP-Adresse herzustellen. Das ist nett, aber (1) scheint ineffizient zu sein (zumal man manchmal auf eine Verbindungsunterbrechung warten muss, da sie nicht immer sofort einen Fehler zurücksendet) und (2) Bash und das Herumschleppen des Skripts erfordert.
Gibt es eine alternative Möglichkeit, dies zu erreichen, die nicht auf der Verwendung von Bash-Skripten oder dem "Testen" der Funktion der Verbindung als Erstes beruht?
/etc/hosts
oder der SSH-Konfigurationsdatei herumfummeln kann, um dies zu erreichen? Oder vielleicht eine Art zu "erkennen", mit welchem LAN Sie gerade verbunden sind?