Le serveur ssh Linux ne déconnecte jamais la session ssh du côté serveur par défaut, vérifiez la configuration du commutateur/routeur/pare-feu pour éviter le problème sans modifier la configuration des serveurs/clients ssh. Si la session ssh est déconnectée en raison d'une inactivité et que l'on souhaite l'arrêter, veuillez suivre les étapes ci-dessous, côté client ou côté serveur, comme décrit ci-dessous :
Paramètres côté client
Pour activer le keep alive à l'échelle du système (accès root requis), modifiez le fichier de configuration /etc/ssh/ssh_config . De même, pour définir les paramètres d'un utilisateur spécifique uniquement, modifiez ~/.ssh/config (créez le fichier s'il n'existe pas). Insérez ce qui suit :
Host * ServerAliveInterval 300 ServerAliveCountMax 2
Ces paramètres obligeront le client ou le serveur SSH à envoyer un paquet nul de l'autre côté toutes les 300 secondes (5 minutes) et à abandonner s'il ne reçoit aucune réponse après 2 tentatives, moment auquel la connexion est susceptible d'avoir été jeté de toute façon.
À partir de la page de manuel ssh_config :
ServerAliveCountMax :
Définit le nombre de messages actifs du serveur (voir ci-dessous) qui peuvent être envoyés sans que ssh(1) ne reçoive aucun message du serveur. Si ce seuil est atteint alors que des messages de serveur actif sont envoyés, ssh se déconnectera du serveur, mettant fin à la session. Il est important de noter que l'utilisation des messages server alive est très différente de TCPKeepAlive (ci-dessous). Les messages actifs du serveur sont envoyés via le canal crypté et ne seront donc pas usurpables. L'option TCP keepalive activée par TCPKeepAlive est usurpable. Le mécanisme de serveur actif est utile lorsque le client ou le serveur dépend de savoir quand une connexion est devenue inactive.
La valeur par défaut est 3. Si, par exemple, ServerAliveInterval (voir ci-dessous) est défini sur 15 et que ServerAliveCountMax est laissé à la valeur par défaut, si le serveur ne répond plus, ssh se déconnectera après environ 45 secondes. Cette option s'applique uniquement à la version 2 du protocole; dans la version 1 du protocole, il n'y a pas de mécanisme pour demander une réponse du serveur aux messages de serveur actif, donc la déconnexion est de la responsabilité de la pile TCP.
ServerAliveInterval :
Définit un intervalle de temporisation en secondes après lequel si aucune donnée n'a été reçue du serveur, ssh(1) enverra un message via le canal crypté pour demander une réponse au serveur. La valeur par défaut est 0, indiquant que ces messages ne seront pas envoyés au serveur, ou 300 si l'option BatchMode est définie. Cette option s'applique uniquement à la version 2 du protocole. ProtocolKeepAlives et SetupTimeOut sont des alias de compatibilité spécifiques à Debian pour cette option.
Paramètre côté serveur
Si vous disposez d'un accès administrateur au serveur, vous pouvez configurer les options ClientAliveInterval, TCPKeepAlive et ClientAliveCountMax dans le fichier de configuration SSHd. Le chemin du fichier est /etc/ssh/sshd_config
# vi /etc/ssh/sshd_config ClientAliveInterval 30 TCPKeepAlive yes ClientAliveCountMax 99999
Vous devrez redémarrer le serveur SSH pour que les modifications prennent effet.
# service sshd restart