Que fait réellement le ServerAliveCountMax dans SSH?
J'essaie de m'assurer que lorsque je me connecte à mon serveur via SSH que la connexion reste ouverte pendant une longue période au lieu de la connexion s'éteint après une courte période d'inactivité. Voici l'exemple
Host *
ServerAliveInterval 60
ServerAliveCountMax 2
J'ai entendu d' une source que le paramètre ci-dessus enverra toujours une réponse au serveur toutes les 60 secondes tant que le serveur reçoit cette réponse. Cependant, si pour une raison quelconque la réponse ne parvient pas au serveur, il essaiera d'envoyer un autre message. Si ce message échoue également, il fermera la connexion. (Je sens que c'est faux)
Les deuxième et troisième sources disent cependant quelque chose de différent. Ils prétendent qu'un message sera envoyé au serveur toutes les 60 secondes s'il y a une période d'inactivité, mais il n'enverra que 2 demandes, puis il fermera la connexion.
Alors, que fait exactement ServerAliveCountMax?
Interval
à être0
désactivée. Mais il n'est pas clair si vous vous mettezMax
à0
. Cela enverrait-il des pings Alive infinis, ou aucun?Les messages de serveur vivant sont utiles lorsqu'un serveur SSH a été configuré pour fermer les connexions après une période de temps sans trafic (les fournisseurs d'hébergement Web partagé qui offrent un accès SSH le font presque toujours par exemple). La définition de ces deux options envoie un paquet toutes les
ServerAliveInterval
secondes, pour un maximum deServerAliveCountMax
temps, gardant ainsi la session en vie.Pour répondre aux commentaires sur l'incertitude de définir l'une des options sur
0
, j'ai lu le code source de l'openssh
implémentation, et voici ce que je vois ...Le réglage
ServerAliveInterval
sur0
n'enverra PAS les paquets, mais il gardera la session active indéfiniment en supposant que la connexion n'est pas interrompue en raison du délai d'expiration TCP et que le serveur n'est pas configuré pour supprimer les clients inactifs.Le réglage
ServerAliveCountMax
sur0
a le même effet que le réglageServerAliveInterval
sur0
.La définition d'une valeur sur une valeur négative ou supérieure à
INT_MAX
(c.-à-d. 2 147 483 647) entraînera une erreur "valeur entière ..." .Le réglage
ServerAliveCountMax
entreINT_MAX/1000+1
(c'est-à-dire 2 147 484) àINT_MAX
(c'est- à -dire 2 147 483 647) équivaudrait également à définir l'une ou l'autre valeur sur0
.Donc, en substance, le plus de délais d'attente que vous pouvez obtenir (tout en envoyant les paquets) est
INT_MAX/1000
(c.-à-d. 2 147 483). Avec un délai d'attente1
et aucun trafic sur les sessions, cela vous donnerait presque 25 jours.Évidemment, d'autres implémentations de SSH peuvent avoir des résultats différents.
la source