Istnieje kilka sposobów przeciwdziałania utracie łączności dla sesji ssh.
Po pierwsze, możesz ustawić opcje ServerAliveInterval, ClientAliveInterval i ClientAliveCountMax. ServerAliveInterval to liczba sekund, jaką klient będzie czekał przed wysłaniem pakietu zerowego na serwer (aby utrzymać połączenie przy życiu), typowa jest wartość 60. ClientAliveInterval to liczba sekund, przez którą serwer będzie czekał przed wysłaniem pustego pakietu do klienta. Wreszcie, ClientAliveCountMax to liczba ClientAliveInterval, w których klient może pozostać sieciowy, zanim połączenie zostanie zerwane; wartość domyślna to 3, co oznacza trzykrotność upływu czasu ClientAliveInterval.
Alternatywnie możesz użyć Mosh , mobilnej powłoki, która ...
umożliwia roaming, obsługuje przerywane połączenia oraz zapewnia inteligentne lokalne echo i edycję linii klawiszy użytkownika. Mosh zastępuje SSH. Jest bardziej niezawodny i responsywny, szczególnie w przypadku połączeń Wi-Fi, komórkowych i dalekobieżnych. Mosh to darmowe oprogramowanie dostępne dla systemów GNU / Linux, FreeBSD, Solaris, Mac OS X i Android.
Następnie możesz użyć autossh zamiast ssh:
autossh - Automatycznie restartuj sesje SSH i tunele
To, którą drogą wybierzesz, zależy głównie od gustów. Jeśli chodzi o mnie, używam autossh do tuneli, które chciałbym mieć na stałe, szczególnie tunele do tyłu; Używam mosh do naprawdę katastrofalnych połączeń, na przykład kiedy ssh''h do mojego laboratorium z samolotu lub samochodu. We wszystkich innych przypadkach dokonany zostanie rozsądny wybór powyższych parametrów dla openssh: na przykład mój plik .ssh / config zawiera następujące wiersze:
Host *
ServerAliveInterval 60
IdentitiesOnly yes
i podobnie dla serwerów, w pliku / etc / sshd_config .
Nawiasem mówiąc, do monitorowania połączenia przez długi czas możesz użyć mtr (= My TraceRoute), inteligentnej kombinacji traceroute i ping, która będzie wykonywać traceroute co tyle sekund (domyślnie = 1 sekunda) danej witryny i bezproblemowo zaktualizuje statystyki udanych pingów, dając ci możliwość ustalenia co najmniej średniej części czasu bezawaryjnej pracy, ale nie ich dystrybucji.