Jeśli spędzasz dużo czasu w wierszu poleceń, mogłeś natknąć się na irytujący problem, w którym twoja sesja kończy się po stosunkowo krótkim okresie bezczynności. Chociaż jest to pożądane z punktu widzenia bezpieczeństwa, może powodować problemy, gdy próbujesz wykonać długotrwałą operację.
Zwykle to, co się dzieje, to fakt, że twoje połączenie z serwerem jest resetowane, gdy jesteś bezczynny przez jakiś czas, zazwyczaj produkując błąd: Connection reset by peer. Aby to obejść, należy ustawić opcję Keep Alive na serwerze.
W tym poradniku dowiesz się, jak zapobiegać timeoutowi połączenia SSH i utrzymywać sesję SSH przy życiu nawet po pewnym czasie bezczynności w systemie Linux.
Zwiększanie limitu czasu połączenia SSH
Na serwerze przejdź do pliku konfiguracyjnego /etc/ssh/sshd_config
.
$ sudo vi /etc/ssh/sshd_config
Przewiń i znajdź następujące parametry:
#ClientAliveInterval #ClientAliveCountMax
Gdzie,
-
ClientAliveInterval
: Ustawia limit czasu w sekundach, po którym, jeśli nie otrzymano żadnych danych od klienta, sshd wyśle wiadomość przez zaszyfrowany kanał, aby zażądać odpowiedzi od klienta. Domyślnie jest to 0, co oznacza, że takie wiadomości nie będą wysyłane do klienta. Ta opcja dotyczy tylko protokołu w wersji 2. -
ClientAliveCountMax
: Ustawia liczbę wiadomości client alive, które mogą być wysłane bez otrzymania przez sshd jakichkolwiek wiadomości z powrotem od klienta. Jeśli ten próg zostanie osiągnięty podczas wysyłania wiadomości client alive, sshd rozłączy klienta, kończąc sesję.
Wartość timeout jest podawana przez iloczyn powyższych parametrów i.e.
Timeout value = ClientAliveInterval * ClientAliveCountMax
Na przykład, powiedzmy, że zdefiniowałeś swoje parametry jak pokazano:
ClientAliveInterval 1200ClientAliveCountMax 3
Wartość Timeout będzie wynosić 1200 sekund * 3 = 3600 sekund. Jest to odpowiednik 1 godziny, co oznacza, że twoja sesja ssh pozostanie żywa przez czas bezczynności 1 godziny bez porzucania.
Alternatywnie, możesz osiągnąć ten sam rezultat określając sam parametr ClientAliveInterval.
ClientAliveInterval 3600
Jak już to zrobisz, przeładuj demona OpenSSH, aby zmiany weszły w życie.
$ sudo systemctl reload sshd
.