Oto, co zrobić, gdy połączenia SSH w systemie Linux przestaną odpowiadać, a naciśnięcia klawiszy nie będą działać.
Być może piszesz w zdalnej sesji SSH i nagle nic się nie dzieje. Wygląda na to, że system nie reaguje na naciśnięcia klawiszy. Co robisz?
Oto dlaczego tak się dzieje, jak zakończyć nieodpowiadającą sesję SSH i dlaczego warto przejść na Mosh.
Co powoduje zawieszanie się sesji SSH?
Głównym powodem zawieszania się sesji SSH jest zrywanie połączenia sieciowego. Sygnały Wi-Fi mogą spaść lub możesz pozwolić komputerowi przejść w stan uśpienia. Dzieje się tak najczęściej w przypadku laptopów. Możesz zamknąć pokrywę laptopa, zapominając, że nadal jesteś zalogowany przez SSH.
Protokół SSH został pierwotnie zaprojektowany w czasach, gdy ludzie nie korzystali rutynowo z laptopów. SSH działa lepiej w sieciach przewodowych.
1. Zakończ sekwencją ucieczki
Jeśli sesja SSH zawiesza się, spróbuj użyć sekwencji ucieczki. Sekwencja ucieczki umożliwia wysyłanie sygnałów do klienta SSH zamiast do komputera zdalnego. Sekwencje ucieczki są poprzedzone znakiem ucieczki. Domyślnie w kliencie OpenSSH jest to plik
tylda (~) postać.Aby zamknąć klienta SSH, możesz nacisnąć klawisz tyldy, a następnie okres (.) klucz.
Jeśli chcesz, możesz także zmienić znak ucieczki. Możesz określić nowy znak ucieczki za pomocą -mi opcję w wierszu poleceń. Można to również zmienić na stałe, ustawiając opcję UcieczkaChar opcja w twoim .ssh/config plik w katalogu domowym na komputerze lokalnym.
2. Korzystanie z polecenia zabicia
Jeśli użycie sekwencji ucieczki nie zadziała, możesz spróbować zabić klienta SSH. Aby znaleźć identyfikator procesu (PID) sesji, wprowadź polecenie ps przez grep:
ps aux | grep ssh
Argument „aux” w ps oznacza „listę wszystkich procesów w systemie, bez względu na to, do kogo należy i czy ma terminal sterujący albo nie."
Jeśli masz wiele sesji, możesz wybrać zamrożoną, ponieważ na liście będzie widoczna nazwa użytkownika i adres na zdalnym komputerze, do którego zalogowane są sesje SSH. Po znalezieniu identyfikatora PID sesji możesz ją zakończyć za pomocą polecenia kill:
kill [PID]
Aby uzyskać lepsze połączenia SSH, użyj Mosh!
Lepszym sposobem na uniknięcie irytujących zamrożonych sesji SSH jest użycie Mosz. Jeśli połączenie zostanie zerwane, Mosh pozwoli Ci pozostać w kontakcie. Po ponownym połączeniu wyśle wszelkie wiadomości. Działa również po uśpieniu maszyny.
Możesz także użyć multipleksera terminala, takiego jak GNU Screen lub tmux, aby wznowić sesję SSH po rozłączeniu, ale Mosh i tmux są jeszcze potężniejsze, gdy są używane razem.
Aby zainstalować Mosh na Debianie i Ubuntu:
sudo apt install mosh
Oraz na Arch Linuxie:
sudo pacman -S mosh
W rodzinie dystrybucji Red Hat:
sudo dnf install mosh
Teraz możesz pozbyć się zablokowanych sesji SSH
Sesje SSH, które nie odpowiadają, mogą być frustrujące, ale można się ich pozbyć za pomocą sekwencji ucieczki lub polecenia kill. Mosh to jeszcze lepszy zamiennik, który utrzyma połączenie przy zerwaniu połączenia i uśpieniu systemu.