web-dev-qa-db-fra.com

Comment empêcher SSH de se déconnecter s'il est inactif depuis un moment

J'ai une connexion SSH à une machine qui est déconnectée par cette machine après 30 minutes d'inactivité de l'utilisateur. Cependant, si je lance quelque chose comme top, la connexion reste active. S'agissant d'une machine cliente, je ne peux pas reconfigurer le serveur SSH de cette machine. Je cherche donc un moyen de détecter automatiquement l’oisiveté et de commencer quelque chose comme top. Une sorte de "screensaver" pour Bash.

Je sais que je peux le faire avec screen, mais malheureusement screen n'est pas installé et je ne peux pas installer de logiciel. J'ai donc besoin d'utiliser ce que Bash propose.

Pour être clair: je cherche une solution que je commence une fois après la connexion, puis je veux utiliser ce terminal, partir, revenir deux heures plus tard et continuer à travailler, sans rien taper avant de partir. De plus, je ne cherche pas à créer des tunnels (pour cela, je recommande l'excellent outil sshuttle )

Des idées?

45
Isaac

Pour être clair: je cherche une solution que je commence une fois après la connexion, puis je veux utiliser ce terminal, partir, revenir deux heures plus tard et continuer à travailler, sans rien taper avant de partir.

Le problème est qu'il y a quelque chose (généralement un pare-feu ou un équilibreur de charge), qui supprime des sessions inactives. Si vous configurez la conservation de session, celle-ci empêchera les périphériques réseau de considérer la session comme inactive.

Correctif OpenSSH Linux/Unix/Cygwin :
La solution la plus simple consiste à activer Keepalives du client ssh; cet exemple enverra un keepalive ssh toutes les 60 secondes:

ssh -o "ServerAliveInterval 60" <SERVER_ADDRESS>

Si vous voulez l'activer sur toutes vos sessions, mettez ceci dans votre /etc/ssh/ssh_config ou ~/.ssh/config:

ServerAliveInterval 60

Pour plus d'informations, reportez-vous à la page de manuel ssh_config

PuTTY Fix :

Enregistrez ceci dans vos "Paramètres par défaut" de PuTTY ...

  • Cliquez sur Connexion
  • Tapez 60 dans "Secondes entre Keepalives"

 PuTTY_screenshot

71
Mike Pennington

En plus de la réponse de Mike Pennigton , je voudrais également vous informer de ServerAliveCountMax.

  • La ServerAliveInterval enverra un keepalive toutes les x secondes (la valeur par défaut est 0 , ce qui désactive cette fonctionnalité si elle n'est pas définie sur autre chose).
  • MAIS cela ne sera fait que ServerAliveCountMax fois. La valeur par défaut de ServerAliveCountMax est 3 (voir page de manuel ssh_config ).

Exemple: Si vous définissez ServerAliveInterval sur 60 et laissez ServerAliveCountMax comme il est, cela signifie que la maintenance conservera uniquement la connexion active pendant 3 * 60 = 180 seconds = 3 minutes.

Pour augmenter ceci à par exemple 2 heures de garder la connexion en vie, vous pouvez faire:

Par commande:

Par conséquent, vous devriez envisager de définir

ssh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 120" <SERVER_ADDRESS>

Persistant:

Pour le rendre persistant, écrivez-le dans /etc/ssh/ssh_config (s'appliquera à l'échelle du système) ou ~/.ssh/config (s'appliquera à l'utilisateur uniquement):

ServerAliveInterval 60
ServerAliveCountMax 120

Voir également:

16
Murmel

J'utilise Mobaxterm et j'ai également rencontré ce problème. Mobaxterm est également livré avec une option permettant de garder le client actif lorsque celui-ci est inactif. Allez à Settings -> Configuration -> SSH. Il y a la section intitulée SSH settings, cochez l'option SSH keepalive. Ensuite, le problème devrait disparaître.

 enter image description here

1
jdhao