J'ai trouvé cette question , mais je suis désolé, je ne comprends pas très bien les paramètres des deux variables ServerAliveInterval
et ceux ClientAliveInterval
mentionnés dans la réponse acceptée. Si mon serveur local arrive à expiration, devrais-je définir cette valeur à zéro? Est-ce qu'il n'y aura jamais de temps mort? Devrais-je plutôt le régler à 300 secondes ou quelque chose?
Ma question est simplement la suivante: certaines de mes connexions arrivent à expiration lorsque je suspends puis suspends mon ordinateur portable avec la réponse, Write failed: Broken pipe
tandis que d’autres ne le font pas. Comment puis-je configurer correctement un sshd local afin qu'il n'échoue pas avec un tuyau cassé?
la source
Ceci est expliqué dans le
sshd_config
manuel (man sshd_config
):Pour les options client, voir l'explication dans
man ssh_config
:Basé sur ci-dessus, 0 signifie qu'il est désactivé. Par conséquent, vous devez définir ces valeurs suffisamment élevées pour éviter les erreurs de canal cassé .
la source
ServerAliveInterval
dans mon fichier de configuration.La réponse de Barthelemy est cool mais ne va pas vraiment à la racine du problème. Vous suspendez votre ordinateur et souhaitez que la session SSH soit toujours active au démarrage de votre ordinateur.
Il n'y a pas de telle configuration pour ssh qui maintiendra la connexion vivante comme ça. SSH utilise TCP, pour commencer, vous avez besoin d’une poignée de main à trois voies, puis vous restez en vie après un temps mort. Lorsque vous fermez / mettez en veille toutes vos connexions TCP sont fermées avec FIN. Pas moyen de surmonter ça.
Pour contourner le problème, vous pouvez utiliser VPS ou une autre boîte en ligne avec écran pour conserver la connexion. Mon conseil ne fait pas cela pour des raisons de sécurité.
la source
Etant donné que vous ne pouvez pas garantir qu'une connexion SSH (TCP) restera active une fois qu'une extrémité cesse d'envoyer des ACK aux paquets reçus, j'utilise personnellement http://www.harding.motd.ca/autossh/ pour redémarrer toutes mes connexions SSH. presque aussitôt que je méfie.
Etant donné que GNU Screen sera utilisé côté serveur, le rattachement me permet de revenir à l’endroit où j’étais auparavant.
Vous pouvez le laisser écouter sur des ports supplémentaires afin de vérifier en permanence que les connexions sont toujours vivantes, mais personnellement, je trouve que cela fonctionne assez bien avec cette désactivation et en nous fiant uniquement à
ServerAliveInterval
/ServerAliveCountMax
.Une autre option est http://mosh.mit.edu/, qui utilise UDP et permet de récupérer de manière transparente du manque de connectivité à long terme.
la source
Vous pouvez également exécuter des commandes avec
nohup
si vous souhaitez qu'elles s'exécutent indépendamment de votre connexion SSH.par exemple
$ nohup tar -xzf some_huge.tar.gz &
Le
&
est, je crois, pas nécessaire, mais il est pratique car il fait tourner le processus en arrière - plan afin que vous puissiez faire d' autres choses.J'utilise toujours nohup pour tout processus qui prend un certain temps, de sorte que je n'ai pas à recommencer si je perds la connexion pour une raison quelconque - coupure de courant (sur mon site distant, pas chez l'hôte), panne de réseau, peu importe.
la source
zsh
utilisateurs devraient rester avecdisown -h
au lieu denohup
, sauf si le problème a été résolu depuis.Mettez votre longue session de course à l'intérieur de l'écran. Voir screen -h pour plus de détails.
De cette façon, vous pouvez vous reconnecter à la machine en utilisant ssh et vous reconnecter à la session écran.
la source