Ecco cosa fare quando le connessioni SSH su Linux non rispondono e la sequenza dei tasti non funziona.
Potresti digitare in una sessione SSH remota e all'improvviso non succede nulla. Il sistema non sembra rispondere alla pressione dei tasti. Cosa fai?
Ecco perché succede, come uscire da una sessione SSH che non risponde e perché potresti voler passare a Mosh.
Che cosa causa il blocco delle sessioni SSH?
Il motivo principale per cui le sessioni SSH si bloccano è l'interruzione della connessione di rete. I segnali Wi-Fi possono interrompersi o potresti lasciare che il computer entri in modalità di sospensione. Questo è più comune con i laptop. Potresti chiudere il coperchio del laptop dimenticando di essere ancora connesso tramite SSH.
SSH è stato originariamente progettato in un'epoca in cui le persone non utilizzavano abitualmente i laptop. SSH funziona meglio sulle reti cablate.
1. Termina con una sequenza di escape
Se la tua sessione SSH si blocca, prova a utilizzare una sequenza di escape. Una sequenza di escape consente di inviare segnali al client SSH anziché alla macchina remota. Le sequenze di escape sono precedute da un carattere di escape. Per impostazione predefinita sul client OpenSSH, è il file
tilde (~) carattere.Per uscire dal client SSH, puoi premere il tasto tilde e poi il tasto periodo (.) chiave.
Puoi anche cambiare il carattere di escape, se lo desideri. È possibile specificare un nuovo carattere di escape con il -e opzione nella riga di comando. Puoi anche modificarlo in modo permanente impostando il file EscapeChar opzione nel tuo .ssh/config file nella directory home sul computer locale.
2. Usando il comando kill
Se l'utilizzo di una sequenza di escape non funziona, puoi provare a uccidere il client SSH. Per trovare l'ID del processo (PID) della sessione, invia il comando ps tramite grep:
ps aux | grep ssh
L'argomento "aux" di ps significa "elenca tutti i processi sul sistema, non importa a chi appartengono o se hanno un terminale di controllo o no."
Se disponi di più sessioni, puoi scegliere quella congelata perché l'elenco mostrerà il nome utente e l'indirizzo sul computer remoto a cui sono connesse le sessioni SSH. Una volta trovato il PID della tua sessione, puoi terminarla con il comando kill:
kill [PID]
Per connessioni SSH migliori, usa Mosh!
Un modo migliore per evitare fastidiose sessioni SSH congelate è utilizzare Mosh. Se la connessione si interrompe, Mosh ti consentirà di rimanere connesso. Invierà eventuali messaggi quando ti ricollegherai. Funziona anche quando metti la macchina in modalità di sospensione.
Puoi anche utilizzare un multiplexer di terminale come GNU Screen o tmux per riprendere la sessione SSH dopo eventuali disconnessioni, ma Mosh e tmux sono ancora più potenti se usati insieme.
Per installare Mosh su Debian e Ubuntu:
sudo apt install mosh
E su Arch Linux:
sudo pacman -S mosh
Sulla famiglia di distribuzioni Red Hat:
sudo dnf install mosh
Ora puoi sbarazzarti delle sessioni SSH bloccate
Le sessioni SSH che non rispondono possono essere frustranti, ma puoi eliminarle con una sequenza di escape o il comando kill. Mosh è un sostituto ancora migliore che manterrà attiva la tua connessione anche durante le interruzioni della connessione e le sospensioni del sistema.