Mam serwer o nazwie gamma
, stale działający i działający w pracy. Czasami łączę się z nim z domu, w którym to przypadku korzystam z publicznego adresu IP 55.22.33.99
. Zdarza się, że mogę podłączyć do niego, kiedy jestem w pracy, a zamiast odbić moje pakiety wokół niepotrzebnie podłączyć poprzez lokalny adres IP 192.168.1.100
.
W tej chwili mam je podzielone na dwa różne wpisy w ~/.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
Więc jeśli jestem w pracy, wszystko co muszę wpisać to ssh gamma-local
i jestem w; jeśli jestem w domu (lub gdziekolwiek indziej na świecie), biegam ssh gamma-remote
.
Podczas łączenia się z serwerem wolałbym nie wpisywać innej nazwy w zależności od tego, gdzie jestem, wolałbym, aby ta część była wykonywana automatycznie; na przykład w niektórych przypadkach mam zautomatyzowane skrypty, które łączą się, którzy nie wiedzą, gdzie jestem.
Istnieje pytanie, które rozwiązuje ten problem za pomocą skryptu Bash, aby „spróbować” najpierw połączyć się z lokalnym, a jeśli się nie łączy, spróbuj połączyć się ze zdalnym adresem IP. Jest to miłe, ale (1) wydaje się nieefektywne (szczególnie, że czasami trzeba „poczekać” na przekroczenie limitu czasu połączeń, ponieważ nie zawsze natychmiast wysyłają błąd z powrotem) i (2) wymaga Basha i ciągnięcia się za skryptem.
Czy istnieje alternatywny sposób osiągnięcia tego celu, który nie polega na użyciu skryptów Bash ani „testowaniu”, aby sprawdzić, czy połączenie działa najpierw?
/etc/hosts
pomocy pliku konfiguracyjnego SSH? A może jakiś sposób na „wykrycie”, do której sieci LAN jesteś aktualnie podłączony?