Je me connecte à une box CentOS 5.5 via SSH depuis une machine Ubuntu 11.04.
La connexion semble fonctionner comme prévu lorsqu'elle est active (c.-à-d. Sans décalage ni perte), mais si elle reste inactive pendant un certain temps, elle se fige et ne répond plus. Finalement, le message d'erreur "Echec de l'écriture: canal cassé" sera renvoyé et je reviendrai à l'invite de ma machine locale.
Quel genre de choses puis-je faire pour aider à déboguer cela, découvrir ce qui se passe et résoudre ce problème? En tant que développeur, cela rend ma vie pénible de devoir se reconnecter constamment.
man sshd_config
.La vraie réponse est presque toujours que vous avez un périphérique NAT sur le chemin, généralement un pare-feu, dont les tables d'état ont un délai d'attente assez agressif. Parce que vous laissez votre connexion ssh inactive pendant quelques périodes, le périphérique NAT "oublie" le mappage entre votre adresse interne et le numéro de port source, et votre adresse éphémère externe NATted et numéro de port.
Lorsque vous essayez ultérieurement de faire quelque chose dans cette fenêtre ssh, une nouvelle paire adresse / port éphémère vous est affectée, à laquelle le serveur ssh de destination n'a aucune connaissance et ne répond pas; plus tard, un certain délai local est atteint et la connexion est interrompue par votre ordinateur local.
La solution pratique pour cela est de faire exactement ce que propose Yuriismaster: activer KeepAlives (qui assure un trafic régulier pour "chatouiller" cette entrée de la table d'état), et utiliser
screen
du côté distant (pour préserver l'état en cas de chute des choses). Je ne poste cette réponse que parce que vous avez demandé ce qui se passe, ainsi que ce qu'il faut faire à ce sujet. Espérons que cela clarifie pourquoi les suggestions de Yuriismaster sont bonnes.la source