Sarà capitato a tutti di utilizzare SSH, per collegarsi ad un server o ad Raspberry-equivalente nella propria rete locale. Se si verificano problemi di connettività, capita che ssh possa piantarsi senza accettare più alcun comando, dovendo terminarlo grezzamente chiudendo la finestra del terminale o con kill
.
L’evento si verifica perché il client ritiene di avere delle connessioni attive in sospeso e ci fa il piacere di rimanere in attesa in modo da poterle riprendere non appena la connettività di rete torna ad essere stabile. Ma se questo non avviene, il processo resta lì e tocca ucciderlo.
Oppure… si può richiedere la chiusura della connessione in modo più garbato. OpenSSH mette a disposizione una serie di sequenze di escape, comandi che non vengono inviati al server remoto ma vanno a dialogare direttamente con il processo ssh in corso. Una sequenza di escape comincia, per impostazione predefinita, con ~ (tilde), che deve essere inviata come primo carattere della linea (ovvero dopo aver battuto invio).
Per esempio, battendo ~.
(tilde seguita da un punto) si termina la connessione corrente, rispondendo al problema di cui sopra.
Con ~?
abbiamo una lista delle sequenze supportate:
Supported escape sequences:
~. - terminate connection (and any multiplexed sessions)
~B - send a BREAK to the remote system
~C - open a command line
~R - Request rekey (SSH protocol 2 only)
~^Z - suspend ssh
~# - list forwarded connections
~& - background ssh (when waiting for connections to terminate)
~? - this message
~~ - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)
Per commentarne alcune:
- Con
~#
si interroga il processo ssh in uso sul numero di connessioni aperte: normalmente si ha solo una riga con il terminale corrente. Nel caso in cui si siano attivati dei tunnel li si vedranno comparire in lista (vedi le opzioni -X, -R e -L di ssh per approfondire). ~Z
è l’equivalente dell’usuale control-Z e sospende il processo ssh. Un control-Z, così come qualsiasi altra sequenza di tasti che non comincia per ~, viene inviata alla sessione remota.- Infine, se per qualche motivo si volesse inviare una
~
come primo carattere senza inavvertitamente innescare una sequenza di escape, è sufficiente inserire~~
.