web-dev-qa-db-fra.com

Garder la session SSH en vie

J'utilise ssh -p8520 username@remote_Host pour me connecter au serveur distant.

Problème:

Il est toujours connecté et fonctionne correctement lorsque je suis au travail. Malheureusement, le terminal se bloque 10 à 15 minutes après que je me suis connecté au serveur distant de chez moi.

Il n'y a pas de rapport d'erreur/délai d'attente sur la console, mais le curseur ne peut plus bouger.

Quand entrer w pour vérifier les utilisateurs de connexion, certains utilisateurs de connexion zombies sont là, et je dois les tuer manuellement.

C'est assez ennuyant. Quelqu'un peut-il m'aider?

196
Haifeng Zhang

Le démon ssh (sshd), qui s'exécute côté serveur, ferme la connexion côté serveur si le client devient silencieux (c'est-à-dire qu'il n'envoie pas d'informations). Pour éviter toute perte de connexion, demandez au client ssh d'envoyer un signal de signe de vie au serveur de temps en temps.

La configuration à cet effet est dans le fichier $HOME/.ssh/config, créez-le si le fichier de configuration n'existe pas. Pour envoyer le signal toutes les quatre minutes (240 secondes) à l'hôte distant, définissez le fichier de configuration suivant:

Host remotehost:
    HostName remotehost.com
    ServerAliveInterval 240

Pour activer l'envoi d'un signal persistant pour tous les hôtes, placez le contenu suivant dans le fichier de configuration:

Host *
    ServerAliveInterval 240

Le fichier de configuration ne doit pas être lisible par tout le monde, alors lancez:

chmod 600 ~/.ssh/config
359
rockymonkey555

Je voulais une solution ponctuelle:

ssh -o ServerAliveInterval=60 [email protected]

Le stocké dans un alias:

alias sshprod='ssh -v -o ServerAliveInterval=60 [email protected]'

Maintenant, vous pouvez vous connecter comme ceci:

me@MyMachine:~$ sshprod
117
Ryan

Pour ceux qui se demandent, @ edward-coast

Si vous voulez définir le maintien en vie pour le serveur , ajoutez ceci à /etc/ssh/sshd_config:

ClientAliveInterval 60
ClientAliveCountMax 2

ClientAliveInterval : définit un intervalle de délai en secondes à l'issue duquel, si aucune donnée n'a été reçue du client, sshd (8) enverra un message via le canal crypté. pour demander une réponse du client.

ClientAliveCountMax : définit le nombre de messages actifs du client (voir ci-dessous) pouvant être envoyés sans que sshd (8) ne reçoive de messages du client. Si ce seuil est atteint pendant l'envoi des messages actifs du client, sshd le déconnectera, mettant ainsi fin à la session.

39
Jeff Davenport

PuTTY settings

FYI PuTTY Les utilisateurs peuvent définir les options ici

14
Ruben Benjamin

Nous pouvons garder notre connexion SSH en ayant les configurations globales suivantes

Ajoutez la ligne suivante au fichier /etc/ssh/ssh_config:

ServerAliveInterval 60
10
minhas23