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?
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 ...
En plus de la réponse de Mike Pennigton , je voudrais également vous informer de ServerAliveCountMax
.
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).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:
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.