le terminal se bloque lorsque la connection est perdue et ssh est activé

quand je ssh vers un server sur Internet dans un onglet terminal gnome, si j'ai perdu la connection internet, l'onglet terminal sera bloqué et n'acceptera aucune input. Pourquoi est-il accroché?

Existe-t-il un moyen d'activer l'onglet terminal, c'est-à-dire de continuer à exécuter le process shell local?

Est-ce que fermer l'onglet du terminal est le seul moyen?

La connection SSH tombe automatiquement après une période de time définie par les parameters ClientAliveInterval et ClientAliveCountMax et leurs équivalents côté client. Si ces timeouts sont assez élevés, vous ferez l'expérience d'une coquille gelée. Cependant, si vous utilisez OpenSSH vous n'avez pas besoin d'attendre un timeout d'expiration et vous pouvez forcer la fermeture d'une connection à l'aide de caractères d'échappement :

 ESCAPE CHARACTERS When a pseudo-terminal has been requested, ssh supports a number of functions through the use of an escape character. A single tilde character can be sent as ~~ or by following the tilde by a character other than those described below. The escape character must always follow a newline to be interpreted as special. The escape character can be changed in configuration files using the EscapeChar configuration directive or on the command line by the -e option. The supported escapes (assuming the default '~') are: ~. Disconnect. (...) 

Lorsque la connection se bloque, appuyez sur ~ (cela signifie que les touches Shift + `sont set), relâchez-la et appuyez sur . . Sinon, si vous travaillez avec une connection instable ou devez être connecté au server distant tout le time, vous pouvez utiliser autossh pour renouveler automatiquement la connection perdue, c'est très pratique.

EDIT :

Toutefois, si ServerAliveInterval et ServerAliveInterval sont définis explicitement sur 0 ou ne sont pas définis explicitement et sont par défaut définis sur 0 selon les sshd_config de sshd_config et ssh_config, les parameters de timeout d'attente sont définis dans les files suivants ( http://tldp.org/ HOWTO / TCP-Keepalive-HOWTO / usingkeepalive.html ):

  # cat /proc/sys/net/ipv4/tcp_keepalive_time 7200 # cat /proc/sys/net/ipv4/tcp_keepalive_intvl 75 # cat /proc/sys/net/ipv4/tcp_keepalive_probes 9 The first two parameters are expressed in seconds, and the last is the pure number. This means that the keepalive routines wait for two hours (7200 secs) before sending the first keepalive probe, and then resend it every 75 seconds. If no ACK response is received for nine consecutive times, the connection is marked as broken. 

Vous pouvez modifier ces 3 files simplement en utilisant echo et vous verrez qu'une session SSH figée est déconnectée en fonction de ces valeurs.