Jak zrobić kit, aby po pewnym czasie nie przerywać sesji?

34

Za każdym razem puttysesja kończy się po pewnym czasie, jeśli jest bezczynna.

Nie ma timeparametru na kit, więc jak mogę zachować moją puttysesję ssh zawsze Żywą?

cnd
źródło

Odpowiedzi:

15

Inną sprawą do sprawdzenia jest to, czy system ustawia zmienną środowiskową TMOUT. Aby to sprawdzić, wystarczy:

env | grep TMOUT

lub

echo $TMOUT

Jeśli jest ustawiony, możesz go zmienić lub rozbroić. Aby zmienić wartość:

export TMOUT=3600

Gdzie liczba jest liczbą sekund do wylogowania. W przeciwnym razie wyłącz go, aby wyłączyć funkcję:

unset TMOUT

Uwaga: być może administrator systemu ustawił to ze względów bezpieczeństwa. Jeśli więc nie jesteś administratorem systemu, możesz to sprawdzić przed samodzielną zmianą.

OldTimer
źródło
48

Włącz utrzymanie aktywności SSH, zmieniając następujące ustawienie na wartość dodatnią:

Strona połączenia w oknie dialogowym Konfiguracja PuTTY

W większości przypadków wystarczy 300. (5 minut.) Powoduje to, że PuTTY okresowo wysyła pakiety zerowe SSH do zdalnego hosta, aby sesja nie przekroczyła limitu czasu.

Pamiętaj, że nie chcemy, aby ta SO_KEEPALIVEopcja była niższa na tej stronie. Jest to znacznie niższy poziom mechanizmu, który najlepiej jest stosować tylko wtedy, gdy protokół na poziomie aplikacji nie ma własnego mechanizmu utrzymywania aktywności. SSH tak robi, więc w tym przypadku nie powinniśmy używać pakietów podtrzymujących TCP.

Są inne rzeczy, które mogą powodować zrywanie połączeń, ale jest to solidna pierwsza rzecz do wypróbowania. Jeśli to nie zadziała, musisz przyjrzeć się innym rzeczom: limity czasu VPN, limity czasu routera, zmiany ustawień na zdalnym serwerze SSH, niestabilne połączenia itp.

Warren Young
źródło
3
Alternatywnie uruchom coś, co generuje ciągłą wydajność, na przykład topgdy Cię nie ma.
LawrenceC,
1
@ultrasawblade: To jest poprawka do taśmy izolacyjnej; jedynie leczy objaw, ale nie rozwiązuje prawdziwego problemu.
Kevin M
Czy ta konfiguracja dotyczy interfejsu wiersza polecenia systemu Windows? To znaczy, zamiast zapisywać sesje, tworzę linki do putty.exe przekazując dane logowania jako argumenty (putty.exe host -l root -pw hasło). Jeśli nie, to czy jest jakiś argument, aby zastosować tę opcję poprzez CLI?
Mc Kernel,
3
Jest to doskonałe rozwiązanie, zwłaszcza gdy pracujesz na niestabilnym połączeniu i nie musisz dokonywać żadnej zmiany na serwerze (w przeciwieństwie do przyjętego rozwiązania).
itoctopus
Czy ktoś wie jak to określić za pomocą linii cmd?
Janac Meena,
8

Oprócz innych odpowiedzi, sugerowałbym bieganie, screenaby móc zarządzać sesjami, nawet jeśli putty się zakończy (połączenie umiera, VPN spada, itp.).

Arcege
źródło
6

Sprawdź następującą opcję w PuTTY:

wprowadź opis zdjęcia tutaj

Franck Dernoncourt
źródło
Niestety, SO_KEEPALIVE wydaje się być wysyłane co kilka godzin (przynajmniej domyślnie), więc lepszą nazwą dla nich byłoby „sprawdź, czy nie żyje” LOL
rogerdpack,
3

Po prostu uruchom to na swojej kitu, upewnij się, aby aktywować sesję co 10 minut.

 while true; do date; sleep 600; done
KKN
źródło
Zawsze uruchamiam to na moim serwerze i to nie działa.
Cokedude
1

Jeśli żadne z powyższych nie pomogło,
musisz zmienić systemowe konfiguracje sshd!
PAMIĘTAJ, ŻE POTRZEBUJESZ W TYM POZWOLENIU NA ROOT!

Edytuj sshd_config plik, w moim przypadku został on zlokalizowany/etc/ssh/sshd_config

treść była:

ClientAliveInterval 300  
ClientAliveCountMax 0

zmień na:

ClientAliveInterval 6000  
ClientAliveCountMax 3

Nie zapomnij

service sshd restart
cześć
źródło
1

Możesz użyć toppolecenia w wierszu poleceń powłoki. To utrzyma twoją sesję przy życiu.

Piyush Agrawal
źródło
To wydaje się raczej obejściem niż rozwiązaniem.
Kusalananda
@Kusalananda Myślę, że obejścia mogą być również rozwiązaniem.
Peter mówi, że przywróć Monikę
0

W Connection>SSHmenu kitu użyj następującej wartości jako Remote command: bash --rcfile <(echo 'source ~/.bash_profile; unset TMOUT').

psychoslave
źródło