249 votes

Façon d'éviter le timeout de la connexion ssh et le gel du terminal GNOME

Lorsque je me connecte via ssh à certains serveurs, le délai d'attente est dépassé et le terminal est "gelé" (il n'accepte pas d'entrée, ne se déconnecte pas, ne peut pas faire Ctrl-C pour tuer le processus ssh ou autre).

C'est dans la section gnome-terminal bien que cela semble mettre en pause l'entrée/sortie du terminal, et n'affecte pas le fonctionnement du logiciel GNOME Terminal lui-même. Il s'agit donc moins d'un bogue avec gnome-terminal qu'une incohérence ennuyeuse avec ssh.

Alors, existe-t-il un moyen d'empêcher/récupérer le terminal des connexions ssh qui ont expiré ?

0 votes

269voto

Peter Eisentraut Points 7030

Appuyez sur Enter , ~ , . l'un après l'autre pour se déconnecter d'une session gelée.

La section "CARACTÈRES D'ÉCHAPPEMENT" de la page de manuel ssh explique les détails sous-jacents.

267voto

Gishu Points 59012

Sshd (le serveur) ferme la connexion s'il n'entend rien du client pendant un certain temps. Vous pouvez demander à votre client d'envoyer un signal de vie au serveur de temps en temps.

La configuration pour cela se trouve dans le fichier ~/.ssh/config . Pour envoyer le signal toutes les quatre minutes à remotehost, mettez ce qui suit dans votre ~/.ssh/config .

Host remotehost
  HostName remotehost.com
  ServerAliveInterval 240

C'est ce que j'ai dans mon ~/.ssh/config .

Pour l'activer pour tous les hôtes, utilisez :

Host *
  ServerAliveInterval 240

Assurez-vous également d'exécuter chmod 600 ~/.ssh/config car le fichier de configuration ne doit pas être lisible par le monde entier.

39voto

fotos Points 511

Même s'il ne s'agit pas d'une réponse directe à votre question, elle est très liée au problème que vous rencontrez. Au lieu d'essayer de maintenir la connexion en vie (toutes les connexions finissent par mourir), vous pouvez utiliser des multiplexeurs de terminaux, par exemple screen y tmux qui maintiennent la session en vie en arrière-plan même si votre terminal est déconnecté.

Essentiellement, lorsque vous vous connectez au serveur SSH, vous exécutez immédiatement screen qui créera et attachera une nouvelle session :

$ screen

Ensuite, vous allez de l'avant et faites votre travail avec le Shell comme vous le feriez normalement. Maintenant, si la connexion est interrompue, lorsque vous pouvez vous remettre en ligne et vous reconnecter au serveur par SSH, vous obtenez une liste des sessions actuelles avec :

$ screen -ls

Pour se rattacher à une session :

$ screen -r <session>

<session> est le PID ou un nom de session. Vous serez reconnecté à votre session et vous pourrez continuer là où vous vous êtes arrêté !

Vous pouvez même détacher la session et vous reconnecter depuis chez vous pour reprendre exactement là où vous vous étiez arrêté. Pour détacher la session, utilisez C-a suivi par C-d (que Control + A y luego Control + D ).

Il y a tutoriel en ligne simple auch.

Utilisation de screen y tmux sur des serveurs distants est considéré comme un meilleure pratique et est hautement recommandé . Certaines personnes vont jusqu'à avoir screen comme leur login par défaut Shell, donc quand ils se connectent ils commencent immédiatement une nouvelle screen session.

13voto

soc Points 10868

Essayez d'ajouter -o ServerAliveInterval=30 à votre chaîne de connexion ( 30 signifie 30 secondes et peut bien sûr être ajustée)

6voto

Ladinfremes Points 61

Vous pouvez également définir un intervalle de temps d'inactivité du côté du serveur SSH :

Dossier : /etc/ssh/ssh_config

Contenu :

ClientAliveInterval XX
ClientAliveCountMax YY

Ce paramètre fonctionne exactement de la même manière que le paramètre client, mais les paquets null sont envoyés depuis le serveur, plutôt que depuis le client.

Extrait de :

http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X