Lorsque je me connecte via ssh à certains serveurs, il expire et "gèle" le terminal (n'accepte pas les entrées, ne se déconnecte pas, ne peut pas utiliser Ctrl-C pour tuer le processus ssh ou quoi que ce soit).
Ceci est dans Ubuntu gnome-terminal
bien que cela semble mettre en pause l'entrée / la sortie du terminal, et n'affecte pas le fonctionnement du logiciel du terminal GNOME lui-même. Donc, moins un bug avec gnome-terminal
une incohérence ennuyeuse avec ssh.
Alors, y a-t-il un moyen d'empêcher / de regagner le terminal des connexions ssh qui ont expiré?
Réponses:
sshd (le serveur) ferme la connexion s'il n'entend plus rien du client. Vous pouvez demander à votre client d’envoyer de temps en temps un signal de signe de vie au serveur.
La configuration pour cela est dans le fichier
~/.ssh/config
. Pour envoyer le signal toutes les quatre minutes à remotehost, inscrivez ce qui suit dans votre~/.ssh/config
.C'est ce que j'ai dans mes
~/.ssh/config
.Pour l'activer pour tous les hôtes, utilisez:
Assurez-vous également de l'exécuter
chmod 600 ~/.ssh/config
, car le fichier de configuration ne doit pas être lisible par tout le monde.la source
~/.ssh/config
?Appuyez sur Enter, ~, l' .un après l'autre pour se déconnecter d'une session historisée.
La section "ESCAPE CARACTERS" de la page de manuel ssh explique les détails sous-jacents.
la source
EscapeChar ~
en commentaire de la ligne/etc/ssh/ssh_config
(ou~/.ssh/ssh_config
si vous préférez).EscapeChar ~
c'est déjà la valeur par défaut intégrée.Même si ce n’est pas une réponse directe à votre question, elle est étroitement liée au problème que vous avez. Au lieu d'essayer de maintenir la connexion en vie (toutes les connexions finissent par mourir), vous pouvez utiliser des multiplexeurs de terminaux, comme par exemple
screen
,tmux
qui maintiennent la session 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
ce qui va créer et attacher une nouvelle session:Ensuite, vous travaillez avec le shell comme vous le feriez normalement. Désormais, si la connexion est interrompue, lorsque vous pouvez vous reconnecter au serveur via SSH, vous obtenez une liste des sessions en cours avec:
Pour vous rattacher à une session:
où
<session>
est le PID ou un nom de session. Vous serez reconnecté à votre session et vous pourrez continuer là où vous l'avez laissé!Vous pouvez même déconnecter la session et vous reconnecter de chez vous pour reprendre le point exact où vous l'avez laissé. Pour détacher la session que vous utilisez
C-a
suivie deC-d
(c'estControl + A
puisControl + D
).Il y a aussi un tutoriel en ligne simple .
L'utilisation de
screen
ettmux
sur des serveurs distants est considérée comme une pratique recommandée et est fortement recommandée . Certaines personnes vont même jusqu'à avoirscreen
comme shell de connexion par défaut. Ainsi, lorsqu'elles se connectent, elles commencent immédiatement une nouvellescreen
session.la source
Essayez d’ajouter
-o ServerAliveInterval=30
à votre chaîne de connexion (30
signifie 30 secondes et peut bien sûr être ajusté)la source
Vous pouvez également définir un délai d'inactivité du côté du serveur SSH:
Fichier:
/etc/ssh/ssh_config
Contenu:
Cela fonctionne exactement de la même manière que le paramètre client, mais les paquets nuls sont envoyés depuis le serveur plutôt que par le client.
Extrait de:
http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html
la source
Pour les personnes qui souhaitent empêcher le client d’arriver à la fin de sa vie.
Vous pouvez essayer de définir
ConnectTimeout 0
dans le fichier de configuration. La valeur 0 signifie que la connexion sera maintenue indéfiniment sauf si elle est fermée.Votre fichier de configuration (ou ssh_config) pourrait ressembler à ceci:
la source