Sobes.tech
Junior

Co zrobić, gdy połączenie SSH się zawiesza?

sobes.tech AI

Odpowiedź od AI

  1. Sprawdzić połączenie sieciowe: Upewnić się, że nie ma problemów z połączeniem internetowym lub siecią lokalną. Ping do serwera.
  2. Sprawdzić obciążenie serwera: Serwer może być przeciążony (CPU, RAM, I/O). Użyj narzędzi monitorujących lub spróbuj uzyskać dostęp przez konsolę hyperwizora/dostawcy.
  3. Zrestartować usługę SSH: Po stronie serwera, jeśli masz dostęp innymi środkami (konsola, inny serwer SSH).
    # dla systemów opartych na systemd
    sudo systemctl restart sshd.service
    
    # dla systemów opartych na SysV init
    sudo service ssh restart
    
  4. Sprawdzić ustawienia serwera SSH: Plik /etc/ssh/sshd_config, zwróć uwagę na parametry ClientAliveInterval i ClientAliveCountMax.
    # /etc/ssh/sshd_config
    ClientAliveInterval 60 # wysyła wiadomość co 60 sekund
    ClientAliveCountMax 3  # pozwala na 3 nieodebrane wiadomości
    
    Po zmianie ustawień, zrestartuj usługę SSH.
  5. Sprawdzić ustawienia klienta SSH: Plik ~/.ssh/config lub opcje wiersza poleceń (-o). Parametry ServerAliveInterval i ServerAliveCountMax.
    # ~/.ssh/config
    Host twoj_alias_serwera
        Hostname twoj_adres_ip_lub_nazwa_hosta
        ServerAliveInterval 60
        ServerAliveCountMax 3
    
    Lub podczas łączenia:
    ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 uzytkownik@twoj_adres_ip_lub_nazwa_hosta
    
  6. Sprawdzić zapory sieciowe: Upewnić się, że zapory (lokalne na kliencie, serwerze, sieciowe) nie blokują lub nie przerywają połączenia na porcie 22 (lub innym używanym porcie SSH).
  7. Sprawdzić TMOUT/IDLE-Timeouts: Niektóre terminale lub środowiska mają własne ustawienia czasu bezczynności, które mogą powodować rozłączenie. Sprawdzić zmienną TMOUT w sesji bash na serwerze.
    # sprawdzić zmienną
    echo $TMOUT 
    
    # ustawić wartość (np. 3600 sekund)
    export TMOUT=3600 
    
    To tymczasowe rozwiązanie dla bieżącej sesji. Aby wprowadzić trwałe zmiany, edytować pliki .bashrc, .profile itp.
  8. Użyj opcji -v do debugowania: Szczegółowe wyświetlenie procesu łączenia SSH.
    ssh -v uzytkownik@twoj_adres_ip_lub_nazwa_hosta
    
  9. Sprawdzić logi SSH: Po stronie serwera /var/log/auth.log lub /var/log/secure (w zależności od systemu).
    # wyświetlić ostatnie wpisy w logu uwierzytelniania
    sudo tail /var/log/auth.log
    
  10. Użyj alternatywnego portu lub protokołu: Jeśli standardowy port 22 jest blokowany gdzieś w sieci, spróbuj użyć innego portu, jeśli jest skonfigurowany na serwerze. Lub użyj innego protokołu dostępu (np. konsoli).