Comment garder une session SSH active
Vivez des sessions SSH sans tracas. Suivez notre guide pour garder vos connexions actives et éliminer les problèmes de gel.
Dans la gestion à distance des serveurs et le transfert sécurisé de données, SSH (Secure Shell) est un outil indispensable. Cependant, sa commodité et sa sécurité peuvent parfois être gâchées par une frustration courante : les sessions SSH gelées.
De plus, la perturbation soudaine d'une session peut entraîner des pertes de travail, des retards de projets et un sentiment d'impuissance.
Mais n'ayez crainte, car une solution est à portée de main. Ce guide complet révèle les secrets pour maintenir des connexions SSH actives et réactives, garantissant une expérience fluide sans problèmes de blocage.
Alors, dites adieu à la frustration et bonjour à des sessions SSH efficaces et ininterrompues. Mais avant d'aller de l'avant, répondons à une question importante.
Pourquoi SSH ferme-t-il la connexion ?
La réponse courte est que tout se résume aux délais d'attente TCP. Le délai d'attente TCP fait référence à la durée pendant laquelle une connexion TCP ou une opération réseau attend une réponse avant de considérer que le processus a échoué.
Dans Linux, les paramètres de délai d'expiration TCP déterminent combien de temps une connexion ou une opération TCP doit attendre avant de supposer qu'un paquet a été perdu ou qu'une connexion est devenue non réactive.
Ce mécanisme est crucial pour garantir que la communication réseau est fiable et efficace.
Dans le cas de maintenir la connexion SSH active, il y a trois paramètres système clés que nous allons brièvement discuter ci-dessous.
- tcp_keepalive_time: détermine l'intervalle entre l'envoi de sondes de maintien en activité TCP sur une connexion TCP inoccupée. Les sondes de maintien en activité vérifient si un pair distant est toujours actif et réactif, même lorsqu'aucune donnée n'est transférée.
- tcp_keepalive_probes : un petit paquet envoyé par un point de terminaison TCP pour vérifier la santé et la réactivité du point de terminaison distant dans une connexion inactive. Il détecte si le point de terminaison distant est devenu inaccessible ou si la connexion a été perdue en raison de problèmes de réseau.
- tcp_keepalive_intvl : contrôle l'intervalle entre l'envoi des sondes de maintien sur une connexion TCP idle.
Chaque valeur est en secondes et peut être facilement vérifiée avec les commandes ci-dessous.
cat /proc/sys/net/ipv4/tcp_keepalive_time
cat /proc/sys/net/ipv4/tcp_keepalive_probes
cat /proc/sys/net/ipv4/tcp_keepalive_intvlQue signifie tout cela ? Le temps de maintien est de 7200 secondes, ou 120 minutes (2 heures). Cependant, cela ne signifie pas que votre session SSH sera maintenue pendant 2 heures, car les deux paramètres suivants sont cruciaux.
Les paramètres par défaut du système envoient neuf sondes à des intervalles de 75 secondes, totalisant 675 secondes, après quoi la session est considérée comme échouée et fermée.
En d'autres termes, après un peu plus de 11 minutes, votre session SSH sera interrompue en cas d'inactivité – c'est-à-dire si vous n'entrez rien dans le terminal.
Bien sûr, vous pouvez ajuster ces paramètres, mais ce n'est pas la bonne façon de procéder. SSH offre son mécanisme pour maintenir les sessions actives, que nous vous montrerons ci-dessous.
Comment garder une session SSH active
Maintenir une session SSH vivante est un processus qui implique une configuration des deux côtés, client et serveur.
Configuration côté client (Linux)
Côté client, votre système de bureau Linux, créez un fichier dans votre répertoire personnel (s'il n'existe pas déjà) « ~/.ssh/config. »
touch ~/.ssh/configCependant, si le répertoire "~/.ssh" n'existe pas, vous devez le créer, puis définir les autorisations appropriées.
mkdir ~/.ssh
chmod 700 ~/.sshnano ~/.ssh/configHost *
ServerAliveInterval 120
ServerAliveCountMax 30Voici ce que signifie chaque option :
- Hôte: Les configurations spécifiées s'appliquent uniquement aux hôtes listés après le mot-clé « Hôte ». Comme nous avons utilisé un caractère générique (*), elles s'appliquent à tous les hôtes.
- ServerAliveInterval : Définit un intervalle de temporisation en secondes, après quoi, si aucune donnée n'a été reçue du serveur, SSH enverra un message par le biais du canal crypté pour demander une réponse du serveur. La valeur par défaut est 0, ce qui indique que ces messages ne seront pas envoyés au serveur.
- ServerAliveCountMax : Définit le nombre de messages de maintien de connexion serveur qui peuvent être envoyés sans que SSH ne reçoive de messages en retour du serveur. Si ce seuil est atteint pendant que les messages de maintien de connexion serveur sont envoyés, SSH se déconnectera du serveur, mettant fin à la session. La valeur par défaut est 3.
En d'autres termes, le client enverra un message de maintien à l'alerte au serveur toutes les 120 secondes (2 minutes), 30 fois. 120 * 30=3600 secondes, ou une heure. C'est la durée totale pendant laquelle, même sans activité, notre session SSH sera maintenue en vie.
Configuration côté client (Windows)
Pour maintenir leur session SSH active, les utilisateurs de Windows utilisant PuTTY pour un accès à distance via SSH doivent définir l'option « Secondes entre les keepalives » dans l'onglet « Connexion » à une valeur supérieure à zéro.
Dans l'exemple ci-dessous, nous avons défini cette valeur à 60, ce qui signifie qu'à chaque minute, le client PuTTY enverra un message de maintient de connexion au serveur pour garder la connexion SSH active.
Bien sûr, n'oubliez pas d'enregistrer vos modifications pour la session PuTTY ("Catégorie" > "Sessions enregistrées" > "Enregistrer").
Configuration côté serveur
Modifier les options de délai d'expiration du serveur affecte tous les clients qui se connectent au serveur. Vous devez éditer le fichier "/etc/ssh/sshd_config" pour ce faire.
sudo nano /etc/ssh/sshd_configPuis définissez les trois options suivantes :
TCPKeepAlive yes
ClientAliveInterval 120
ClientAliveCountMax 30Voici ce que signifie chacune de ces trois options :
- TCPKeepAlive : Spécifie si le système doit envoyer des messages de maintien de connexion TCP au client.
- ClientAliveInterval : Définit un intervalle de temporisation en secondes, après lequel, si aucune donnée n'a été reçue du client, le serveur SSH enverra un message via le canal encrypté pour demander une réponse du client. La valeur par défaut est 0, indiquant que ces messages ne seront pas envoyés au client.
- ClientAliveCountMax : Définit le nombre de messages de maintien en vie du client qui peuvent être envoyés sans que le serveur SSH ne reçoive de messages en retour du client. Si ce seuil est atteint pendant que des messages de maintien en vie du client sont envoyés, le serveur SSH déconnectera le client, mettant ainsi fin à la session. La valeur par défaut est 3.
Comme dans le cas ci-dessus avec la configuration côté client, le serveur SSH gardera la connexion active pendant une heure (120 * 30=3600 secondes).
Enfin, redémarrez le serveur SSH :
sudo systemctl restart sshRésultat final
Mettre en œuvre des délais d'expiration SSH et des keepalives présente un équilibre subtil entre l'amélioration de la sécurité et l'assurance de connexions fiables.
Les avantages des délais d'expiration SSH et des keepalives sont évidents dans leur contribution à la sécurité réseau en mettant automatiquement fin aux sessions inactives, réduisant ainsi le risque d'accès non autorisé et d'attaques potentielles.
D'autre part, des inconvénients émergent d'une application trop zélée des délais d'attente et des connexions permanentes. Des paramètres excessivement agressifs peuvent entraîner des déconnexions non intentionnelles, entravant la productivité et causant de la frustration pour les utilisateurs.
Ainsi, pour trouver le bon équilibre, les administrateurs doivent soigneusement considérer leur infrastructure réseau et le comportement des utilisateurs. Cela crée un environnement sécurisé et efficace pour la communication à distance, favorisant la satisfaction des utilisateurs et la protection des données.
Consultez les fichiers man côté client ou côté serveur pour plus d'informations sur les options de fichiers de configuration supplémentaires.



