Jak wyłączyć timeout przy połączeniach SSH

Data publikacji: 2015-06-30 | Tagi:

To potrafi być wkurzające: robię coś w konsoli połączony zdalnie przez ssh, zostawiam ją na chwilę. Wracam do niej i albo jest zawieszona, albo dostaję komunikat: Read from remote host: Connection reset by peer. Okazuje się, że jest na to sposób, a nawet kilka :)

Pierwszy sposób to gmeramy we własnych plikach konfiguracyjnych, czyli /etc/ssh/ssh_confg (zmiana globalna) lub ~/.ssh/config (zmiana dla użytkownika).

W jednym lub drugim pliku należy wpisać:

ServerAliveInterval 100

Ta opcja powoduje, że jeśli przez 100 sekund nie ma komunikacji między klientem i serwerem, to klient wysyła specjalną wiadomość, aby podtrzymać połączenie.

Drugi sposób jest taki sam w działaniu, ale używamy go przy konkretnym połączeniu:

ssh -o ServerAliveInterval=100 user@host

Działanie identyczne jak poprzednie.

Trzeci sposób to zaimplementowanie podobnego mechanizmu po stronie serwera ssh

TCPKeepAlive yes
ClientAliveInterval 30
ClientAliveCountMax 3

TCPKeepAlive odpowiada za utrzymywanie połączenia na poziomie protokołu tcp, zwykle powinna być włączona.

ClientAliveInterval 30 powoduje wysyłanie do klienta co 30 sekund wiadomości podtrzymującej połączenie. Jeśli nie serwer nie otrzyma odpowiedzi trzy razy z rzędu, za co odpowiada opcja ClientAliveCountMax 3, to rozłącza klienta.

Te trzy techniki stosowane razem bądź osobno powinny uchronić nas przed niekontrolowanymi zwiechami lub rozłączeniami sesji ssh.


Oceń ten post:
Podziel się:

comments powered by Disqus

IT w obrazkach: