GNU/Linux >> Tutoriels Linux >  >> Linux

Correction d'une erreur de tuyau cassé avec une connexion SSH

Si vous utilisez SSH pour vous connecter à des serveurs Linux distants, vous remarquerez que si vous laissez votre session SSH inactive pendant un certain temps, puis essayez de l'utiliser à nouveau, la session SSH se déconnecte avec un message d'erreur comme celui-ci :

:client_loop: send disconnect: Broken pipe

Sur certains systèmes, il affichera "Échec de l'écriture :canal cassé" ou "Connexion fermée par l'hôte distant".

Voyons ce qui cause cette erreur et comment maintenir votre connexion SSH active.

Correction d'une erreur de tuyau cassé avec SSH

Comme vous l'avez peut-être deviné, la connexion SSH est fermée pour cause d'inactivité. Il n'y a pas de valeur définie, mais elle est généralement d'environ 5 minutes.

Ce que vous pouvez faire pour éviter la déconnexion de la session SSH est d'envoyer un 'message actif' soit du serveur au client (ClientAliveInterval ) ou du client au serveur (ServerAliveInterval ) à un certain intervalle de temps.

De cette façon, vous maintenez la session SSH active car il existe une communication entre le client et le serveur et le serveur comprend que le client est toujours là.

Maintenant, il y a deux façons de le faire. Soit vous envoyez le message vivant du client au serveur, soit du serveur au client.

  • Si vous vous connectez à plusieurs serveurs via SSH, configurez-le sur votre ordinateur.
  • Si vous êtes un administrateur système et que plusieurs utilisateurs se plaignent d'une déconnexion fréquente de la connexion SSH, vous pouvez le configurer sur le serveur.

Méthode 1 :Modification de la configuration SSH côté client

Supposons que vous souhaitiez maintenir votre connexion SSH active avec jusqu'à 10 minutes (600 secondes) d'inactivité.

Lors de la connexion au système Linux distant via SSH, vous pouvez mentionner le ServerAliveInterval valeur comme ceci :

ssh -o ServerAliveInterval=600 [email protected]_ip_address

Maintenant, cette chose fonctionne mais entrer manuellement cette option chaque fois que vous vous connectez au serveur est fastidieux. Pourquoi ne pas le rendre permanent ?

J'espère que vous connaissez les fichiers de configuration SSH. Côté client, vous pouvez en profiter pour définir certains paramètres SSH pour des connexions spécifiques ou pour toutes. J'ai expliqué le fichier de configuration SSH en détail ici.

Tout d'abord, assurez-vous que vous disposez du fichier de configuration ssh. Si ce n'est pas le cas, créez-le :

touch ~/.ssh/config

Il est important de lui donner les autorisations de fichier correctes, sinon vous aurez une erreur d'autorisation refusée lors de la connexion via SSH.

Utilisez la commande chmod et ajoutez-y la permission de fichier suivante :

chmod 600 ~/.ssh/config

Si vous vous sentez paresseux ou ne voulez pas entrer dans les détails, utilisez cette commande pour définir l'intervalle de vie à 600 secondes (10 minutes) :

echo "ServerAliveInterval 600" >> ~/.ssh/config 

Cela définira la valeur ServerAliveInterval sur 10 minutes pour toutes les connexions SSH que vous utiliserez. Essayez-le si vous le souhaitez.

Si vous voulez le rendre plus approprié, vous devez l'ajouter comme ceci :

Host *
ServerAliveInterval 600

Méthode 2 :Modification de la configuration SSH côté serveur

Le fichier de configuration SSH du serveur se trouve généralement dans /etc/ssh/sshd_config.

Si vous ouvrez ce fichier, vous trouverez ici deux paramètres intéressants :

  • ClientAliveInterval : Il s'agit de la période d'inactivité après laquelle le serveur enverra un message actif au client connecté ssh.
  • ClientAliveCountMax :Il s'agit du nombre de tentatives que le serveur fera pour envoyer le message actif.

Supposons que vous définissiez ClientAliveInterval à 200 secondes et ClientAliveCountMax à 3. Cela signifie que le serveur enverra un message actif après 200 secondes. S'il n'y a aucune activité du client, il enverra à nouveau un message actif à 400 secondes. Aucune réponse/activité du client et un autre message actif est envoyé à 600 secondes. Après cela (600 secondes), la connexion SSH est déconnectée.

Vous pouvez modifier le /etc/ssh/sshd_config fichier dans votre éditeur de texte basé sur un terminal préféré comme Vim. Recherchez les entrées ClientAliveInterval et ClientAliveCountMax. Supprimez la touche # au début des lignes et donnez-leur la valeur appropriée.

Enregistrez et quittez le fichier.

Veuillez ne pas définir le délai d'expiration de la connexion SSH sur plusieurs heures. Ce serait un gaspillage de ressources.

J'espère que ce tutoriel vous a aidé à résoudre le problème d'erreur de tuyau cassé avec la connexion SSH. Vos commentaires sont les bienvenus.


Linux
  1. WebLogic ne démarre pas avec l'erreur "Aucun routeur disponible vers la destination"

  2. Comment augmenter le délai d'expiration de la connexion SSH

  3. Pourquoi Rsync échoue-t-il avec un tuyau cassé (32), erreur dans le socket Io (code 10) à Io.c (820) ??

  4. Comment sécuriser le service SSH avec Port Knocking

  5. Correction ::Erreur de connexion Linux SSH refusée

Comment gérer à distance un serveur Linux avec SSH

Correction de HTTP Basic :accès refusé et erreur d'échec d'authentification fatale avec GitLab

Comment verrouiller votre serveur CentOS avec IPTables

Générer des clés RSA avec SSH en utilisant PuTTYgen

Connectez-vous à un serveur Linux avec une clé privée SSH sur un client Windows

Comment sécuriser SSH avec Fail2Ban