Mam połączenie ssh z maszyną, która zostaje rozłączona przez tę maszynę po 30 minutach braku wkładu użytkownika. Jeśli jednak zacznę coś takiego top
, połączenie pozostanie aktywne. Ponieważ jest to komputer klienta, nie mogę ponownie skonfigurować serwera SSH tego komputera. Dlatego szukam sposobu na automatyczne wykrycie bezczynności i rozpoczęcie czegoś takiego top
. Coś w rodzaju „wygaszacza ekranu” dla Basha.
Wiem, że mogę to zrobić screen
, ale niestety screen
nie jest zainstalowany i nie mogę zainstalować oprogramowania. Więc muszę skorzystać z tego, co oferuje Bash.
Wyjaśnij: szukam rozwiązania, które uruchamiam raz po zalogowaniu, a następnie chcę użyć tego terminalu, odejść, wrócić dwie godziny później i kontynuować pracę, nie wpisując niczego przed odejściem. Nie szukam też tunelowania (do tego polecam świetne narzędzie sshuttle )
Jakieś pomysły?
Odpowiedzi:
Problem polega na tym, że istnieje coś (zwykle firewall lub moduł równoważenia obciążenia), który upuszcza bezczynne sesje. Jeśli skonfigurujesz utrzymanie sesji, będzie ono uniemożliwiać urządzeniom sieciowym uznanie sesji za bezczynną.
Poprawka OpenSSH dla Linux / Unix / Cygwin :
Najprostszą poprawką jest włączenie Keepalives dla klientów ssh; ten przykład wyśle utrzymanie ssh co 60 sekund:
Jeśli chcesz włączyć to we wszystkich sesjach, umieść to w swoim
/etc/ssh/ssh_config
lub~/.ssh/config
:Aby uzyskać więcej informacji, zobacz stronę
ssh_config
podręcznikaKit Fix :
Zapisz to w „Ustawieniach domyślnych” PuTTY ...
źródło
Oprócz odpowiedzi Mike'a Pennigtona , chciałbym cię też uświadomić
ServerAliveCountMax
.ServerAliveInterval
Wyśle keepalive co X sekund (domyślnie jest to 0 , co powoduje wyłączenie tej funkcji, jeśli nie jest ustawiona na coś innego).ServerAliveCountMax
raz. Wartość domyślnaServerAliveCountMax
to 3 (patrz manpage ssh_config ).Przykład: jeśli ustawisz
ServerAliveInterval
na 60 i wyjdziesz bezServerAliveCountMax
zmian, oznacza to, że keepalive utrzyma połączenie tylko przez3 * 60 = 180 seconds =
3 minuty.Aby zwiększyć to do np. 2 godzin utrzymywania połączenia przy życiu, możesz:
Na polecenie:
Dlatego powinieneś rozważyć ustawienie
Uporczywy:
Aby był trwały, napisz do
/etc/ssh/ssh_config
(zastosuje się w całym systemie) lub~/.ssh/config
(zastosuje tylko dla użytkownika):Zobacz też:
źródło
ServerAliveCountMax
określa liczbę żywych komunikatów serwera, które mogą zostać wysłane bez odbierania żadnych wiadomości z serwera. Jeśli chceszssh
, aby wyjść po zamarza (tak, że można go uruchomić ponownie), należy właściwie ustawićServerAliveCountMax
na niską liczbę. Zobacz połączony OP strony man .Używam Mobaxterm i również spotkałem się z tym problemem. Mobaxterm jest również dostarczany z opcją utrzymania klienta przy życiu, gdy jest on bezczynny. Idź do
Settings -> Configuration -> SSH
. Jest sekcja zatytułowanaSSH settings
, zaznacz opcjęSSH keepalive
. Wtedy problem powinien zniknąć.źródło