Contents

Jak zakończyć niereagującą sesję SSH w systemie Linux

Być może wpisujesz dane w zdalnej sesji SSH i nagle nic się nie dzieje. System wydaje się nie reagować na naciśnięcia klawiszy. Co robić?

Wystąpienie zablokowanej lub niereagującej sesji SSH można przypisać różnym czynnikom, takim jak przerwy w sieci, przeciążenie serwera lub awarie oprogramowania. Aby zakończyć niereagującą sesję, można spróbować kilku metod, w tym wymusić zakończenie połączenia za pomocą polecenia “kill” w oknie terminala lub zamykając wszystkie powiązane połączenia za pośrednictwem aplikacji, która zainicjowała sesję SSH. W niektórych przypadkach przejście na alternatywny protokół, taki jak Mosh, który oferuje zwiększoną wydajność dzięki trwałym tunelom i wbudowanej integracji powłoki, może zapewnić bardziej wydajne rozwiązanie.

Co powoduje zawieszanie się sesji SSH?

Jednym z głównych powodów, dla których sesje SSH przestają odpowiadać, jest utrata łączności sieciowej wynikająca z osłabienia sygnałów Wi-Fi lub przypadkowego zawieszenia urządzenia zdalnego. Takie przypadki są szczególnie powszechne wśród użytkowników korzystających z komputerów przenośnych, ponieważ mogą oni zaniedbać rozważenie trwającej sesji podczas zamykania pokrywy laptopa lub nie utrzymywać stabilnego połączenia z Internetem.

SSH, skrót od Secure Shell, został pierwotnie opracowany w czasach, gdy osoby fizyczne nie wykorzystywały powszechnie laptopów jako głównego sposobu uzyskiwania dostępu do zasobów sieciowych. Projekt i funkcjonalność SSH zostały dostosowane do optymalnego działania w środowisku, w którym połączenia były nawiązywane za pomocą fizycznych kabli, a nie transmisji bezprzewodowych. W związku z tym jest on ogólnie uważany za bardziej skuteczny w użyciu z sieciami przewodowymi w porównaniu do sieci bezprzewodowych.

Zakończ za pomocą sekwencji ucieczki

/pl/images/ssh-escape-quit.jpg

Jeśli połączenie Secure Shell (SSH) przestanie odpowiadać lub zostanie zawieszone, odpowiednim działaniem jest zastosowanie sekwencji ucieczki. Działania wykonywane za pomocą sekwencji ucieczki umożliwiają komunikację z klientem SSH, a nie z odległym urządzeniem hosta. Domyślny znak ucieczki w kliencie OpenSSH pociąga za sobą użycie symbolu tyldy (~), który poprzedza daną sekwencję ucieczki.

Aby wyjść z klienta Secure Shell (SSH), można użyć symbolu tyldy, po którym następuje kropka (kropka), która zwykle znajduje się w tym samym wierszu klawiatury co symbol tyldy.

Alternatywnie można zmodyfikować znak ucieczki zgodnie z własnymi preferencjami. Aby to zrobić, wystarczy użyć opcji “-e” podczas wykonywania polecenia. Alternatywnie, zmianę tę można wprowadzić na stałe, dostosowując parametr “EscapeChar” w pliku “.ssh/config” znajdującym się w katalogu domowym w systemie hosta.

Używanie polecenia kill

/pl/images/ps-grep-ssh.jpg

Jeśli użycie sekwencji escape nie powiedzie się, można spróbować zakończyć klienta SSH, identyfikując jego identyfikator procesu (PID). Można to osiągnąć poprzez potokowanie danych wyjściowych polecenia “ps” poprzez wyszukiwanie za pomocą “grep”:

 ps aux | grep ssh 

Parametr “aux” w poleceniu wyświetlającym procesy (“ps”) oznacza, że wszystkie procesy uruchomione w systemie powinny zostać wyświetlone, niezależnie od ich właściciela lub tego, czy mają powiązany terminal, czy nie.

Podczas zarządzania wieloma instancjami połączenia Secure Shell (SSH), identyfikacja aktywnej sesji może być trudna ze względu na brak wizualnych wskaźników. Jednak sprawdzając plik dziennika, który wyświetla informacje, takie jak nazwy użytkowników i adresy IP powiązane z każdą sesją, można zlokalizować aktualnie uruchomioną instancję. Aby odłączyć nieaktywną sesję, wystarczy wykonać polecenie “kill”, po którym następuje identyfikator procesu (PID) żądanego zakończenia.

 kill [PID] 

Aby uzyskać lepsze połączenia SSH, użyj Mosh!

/pl/images/mosh-ssh-vim.jpg

Lepszym sposobem na uniknięcie irytujących zamrożonych sesji SSH jest użycie Mosh . Jeśli połączenie zostanie zerwane, Mosh pozwoli ci pozostać w kontakcie. Wyśle wszystkie wiadomości po ponownym nawiązaniu połączenia. Działa również po uśpieniu komputera.

Podczas korzystania z multipleksera terminali, takiego jak GNU Screen lub tmux, masz możliwość utrzymania, a następnie wznowienia sesji SSH w przypadku przerw, zapewniając płynną łączność. Jednak w połączeniu z Mosh, ich możliwości stają się jeszcze większe, co skutkuje zoptymalizowanym doświadczeniem użytkownika.

Aby zainstalować Mosh na Debianie i Ubuntu:

 sudo apt install mosh 

I na Arch Linux:

 sudo pacman -S mosh 

Na rodzinie dystrybucji Red Hat:

 sudo dnf install mosh 

Teraz możesz pozbyć się zablokowanych sesji SSH

Mosh zapewnia bardziej wydajne rozwiązanie do utrzymywania aktywnej sesji SSH w porównaniu z tradycyjnymi metodami, takimi jak wykorzystanie sekwencji ucieczki lub użycie polecenia “kill”. Narzędzie to zapewnia ciągłą łączność pomimo przerw, takich jak zerwane połączenia lub okresy bezczynności, eliminując w ten sposób potrzebę powtarzania procesów ponownego uwierzytelniania, powszechnie kojarzonych z niereagującymi sesjami SSH.