Connexion SSH descend automatiquement après un laps de temps défini par ClientAliveInterval
et les ClientAliveCountMax
paramètres et leurs équivalents côté client. Si ces délais d'attente sont assez élevés, vous rencontrerez un shell gelé. Cependant, si vous utilisez, OpenSSH
vous n'avez pas à attendre un délai d'attente et pouvez forcer la fermeture d'une connexion à 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 connexion se bloque, appuyez sur ~(cela signifie Shift+ `touches ensemble), relâchez-la et appuyez sur .. Alternativement, si vous travaillez avec une connexion instable ou devez être connecté au serveur distant tout le temps, vous pouvez utiliser autossh pour renouveler automatiquement la connexion perdue, c'est très pratique.
MODIFIER :
Cependant, si les deux ClientAliveInterval
et ServerAliveInterval
sont définis explicitement sur 0 ou ne sont pas définis explicitement et sont ensuite définis sur 0 par défaut selon sshd_config
et ssh_config
pages de manuel, les paramètres de délai d'attente sont définis dans les fichiers suivants (à partir de 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 fichiers simplement en utilisant echo
et voyez par vous-même qu'une session SSH gelée est déconnectée en fonction de ces valeurs.
Enter
~
.
comme la séquence qui met fin à la connexion./proc/sys/net/ipv4/tcp_keepalive*
fichiers etClientAliveInterval
etServerAliveInterval
travailler ensemble? Sont-ils tous pour les mêmes paramètres, c'est-à-dire pour maintenir la connexion ssh en vie? Les anciens fichiers ne sont-ils pas uniquement destinés aux connexions ssh mais également à d'autres connexions TCP?/proc/sys/net/ipv4/tcp_keepalive*
ne sont pas seulement pourssh(d)
mais comme il est dit dans le document que j'ai lié à:Remember that keepalive support, even if configured in the kernel, is not the default behavior in Linux. Programs must request keepalive control for their sockets using the setsockopt interface. There are relatively few programs implementing keepalive, but you can easily add keepalive support for most of them following the instructions explained later in this document.
sshd
sur la télécommande ou retirez un câble et vérifiez quand une session gelée sessh
terminera d'elle-même.frozen shell
J'entends par là un shell qui est inactif, ne prend aucune clé et n'imprime rien.