Sequenze di escape SSH

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 ~~.