GNU/Linux >> Tutoriels Linux >  >> Linux

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

Pour être clair :je recherche une solution que je lance une fois après m'être connecté, 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 les sessions inactives. Si vous configurez des keepalives de session, les keepalives empêcheront les périphériques réseau de considérer la session comme inactive.

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

ssh -o "ServerAliveInterval 60" <SERVER_ADDRESS>

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

ServerAliveInterval 60

Pour plus d'informations, consultez le ssh_config page de manuel

Correction de mastic :

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

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


En plus de la réponse de Mike Pennigton, je voudrais vous faire part de ServerAliveCountMax aussi.

  • Le ServerAliveInterval enverra un keepalive toutes les x secondes (la valeur par défaut est 0 , qui désactive cette fonctionnalité si elle n'est pas définie sur autre chose).
  • Ce sera fait ServerAliveCountMax fois si aucune réponse n'est reçue. La valeur par défaut de ServerAliveCountMax est 3 (voir la page de manuel ssh_config).

Exemple :Si vous définissez ServerAliveInterval à 60 et laissez ServerAliveCountMax tel quel, cela signifie que le keepalive n'attendra que 3 * 60 = 180 seconds = 3 minutes avant de quitter.

Pour l'augmenter à par ex. 2 heures à essayer de maintenir la connexion, 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 à /etc/ssh/ssh_config (s'appliquera à l'ensemble du système) ou ~/.ssh/config (s'appliquera uniquement à l'utilisateur):

ServerAliveInterval 60
ServerAliveCountMax 120

Remarque

Comme dislick l'a correctement souligné, cela pourrait ne pas être ce que vous voulez, selon votre situation :

  • Si vous souhaitez terminer rapidement la session dès que le serveur ne répond plus, vous devez choisir une valeur faible pour ServerAliveCountMax .
  • Si vous êtes plus intéressé par le maintien d'une connexion déjà établie (par exemple, vous partez en train et avez une latence élevée), vous devez choisir une valeur plus élevée pour ServerAliveCountMax pour autoriser ssh pour continuer à essayer de rétablir la connexion.

Voir aussi :

  • unix.stackexchange.com - Quel est le délai d'inactivité par défaut pour OpenSSH ?

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


Linux
  1. Comment SSH sur Linux à partir d'Android

  2. Comment détecter si le shell est contrôlé depuis Ssh ?

  3. Journalctl :comment empêcher le texte de tronquer dans le terminal ?

  4. Empêcher Tmux de démarrer sur Ssh ?

  5. Comment empêcher `ls` de trier la sortie ?

Comment configurer l'authentification multifacteur pour SSH sous Linux

Comment empêcher SSH d'expirer

Comment se connecter en SSH à votre serveur Linux à partir de Windows

Comment se connecter en SSH à WSL2 sur Windows 10 à partir d'une machine externe

Comment se connecter en SSH à une machine Windows 10 depuis Linux OU Windows OU n'importe où

Comment empêcher les connexions SSH de se déconnecter en raison de l'inactivité lors de l'utilisation de MobaXterm