dlaczego moje sesje ssh zawieszają się po pewnym czasie? [Zamknięte]

10

Przepraszamy, jeśli nie jest to właściwe miejsce do zadawania tego pytania.

Regularnie muszę ssh do różnych serwerów. Teraz, z mojej domowej maszyny (linux mint), kiedy łączę się przez ssh, po pewnym czasie bezczynności, moja ssh shells zawiesza się i nie ma sposobu na odzyskanie go. Jedyne, co mogę zrobić, to „~.”, Co najmniej daje mi z powrotem moją inicjującą powłokę.

Kiedy loguję się z innych lokalizacji na te same serwery, nie ma problemu. Czy to może być problem z moim usługodawcą internetowym? Jak mogę dalej badać ten temat?

To naprawdę denerwujące, ponieważ muszę ponownie ustanowić połączenia ssh po zamrożeniu, wrócić do miejsca, w którym byłem i wznowić pracę. Dzięki

kokkolitofor
źródło
Czy masz statyczny adres IP? Jeśli nie, może to oznaczać, że Twój dostawca Internetu podał ci inny adres IP podczas sesji - sprawdź swoje dzienniki i zobacz.
user9517
Nie mam statycznego adresu IP. Sprawdzi
coccolithophyceae

Odpowiedzi:

20

Twój NAT upuszcza gniazdo TCP po pewnym okresie bezczynności.

Twój klient ssh może opcjonalnie wysyłać okresowe noopy na serwer, eliminując w ten sposób ten problem. Aby to zrobić, dodaj to do ~/.ssh/config:

Host *
  ServerAliveInterval 60

Możesz też ponownie skonfigurować NAT, aby nie wygasał elementów ze swojej tabeli stanów tak szybko, jak jest teraz.


Oprócz powyższego powinieneś używać terminala do sesji - coś takiego jak GNU Screen lub tmux. W obu przypadkach możesz odzyskać sesję w przypadku rozłączenia.

EEAA
źródło
NAT lub jakikolwiek boleśnie zły firewall na ścieżce, który lubi upuszczać bezczynne sesje TCP. Nie ma powodu, aby porzucać bezczynne sesje TCP, poza brakiem pamięci do utrzymywania stanów, ale powinno się to zdarzać bardzo rzadko, jeśli poprawnie dopasujesz rozmiar i skonfigurujesz sprzęt. Dobrze jest wiedzieć, czy Twój dostawca / administrator jest kompetentny (czy nie).
zerodeux
0

W moim przypadku problemem był duży rozmiar MTU. Możesz zmienić MTU na routerze, jeśli używasz NAT, ale zmieniam MTU na serwerze:

sudo /sbin/ifconfig eth0 mtu 1036
sudo /etc/init.d/networking restart

W systemie Windows możesz również zwiększyć ten klucz:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"TcpMaxDataRetransmissions"=dword:00000010
Vasin Yuriy
źródło