Interruption de sessions ssh

Quand j'ouvre une session ssh vers le cluster, si je suis inactif pendant quelques minutes la session est gelée, je dois fermer le terminal, en ouvrir un nouveau et établir une nouvelle connexion, recharger mes modules, retrouver le chemin où j'étais etc.

Est-ce normal que les sessions soient interrompues aussi rapidement ?
Y a-t-il un moyen d'empêcher l'interruptiojn (nohup) ?

Je pourrais utiliser screen pour retrouver mon environnement, mais ce n'est pas idéal car ça encourage à laisser traîner un tas de sessions screen sur la machine d'accueil. Et avec sinteractive je risque d'avoir des sessions oubliées sur tous les noeuds.

Merci

Jacques

Une solution est de forcer ton client SSH à envoyer à interval régulier un signal au serveur.

Pour cela il suffit d'éditer le fichier ~/.ssh/config sur ton ordi et d’y ajouter les lignes suivantes :

Host *
    ServerAliveInterval 240

Ton client enverra alors un signal toutes les 240 secondes (4 minutes) au serveur pour dire qu’il est toujours là et la connexion sera maintenue ouverture.

Moi, j'ai un alias dans mon ~/.bashrc

alias sshifb='ssh -o "ServerAliveInterval 10" -Y glecorguille@core.cluster.france-bioinformatique.fr'

Idem, dans mon fichier de configuration SSH (~/.ssh/config)

Host *
	# Des données sont transmises toutes les 30 secondes pour demander au 
	# serveur de confirmer que la connexion est bien fonctionnelle.
	# Permet surtout de maintenir la connexion active...
	ServerAliveInterval 30
	# Indique au client de considérer la connexion morte si  5 
	# non-réponses du serveur (soit 5*30s = 150s, 2.5min) 
	ServerAliveCountMax 5

On apprend des choses tous les jours :+1:

Il me semble que l'on peut aussi régler le problème pour tous les clients d'un coup

en mettant

ServerAliveInterval 300 dans le fichier de conf du serveur ssh (/etc/ssh/ssh_config ou approchant)

qui stipule dans son entête:

# This is the ssh client system-wide configuration file.  See
# ssh_config(5) for more information.  This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.

La solution proposée par Christophe me semble intéressante car les interruptions au bout de quelques secondes sont perturbantes pour les usagers.

Par ailleurs il est possible qu'on ne désire pas que des usagers distraits laissent traîner des connexions inutilement. Une possibilité serait de prolonger le temps par défaut de déconnexion (par exemple 1h), ce qui n'empêcherait pas ceux qui le désirent d'inclure un ServerAliveInterval dans leur config (en espérant qu'ils n'oublient pas leurs connexions).

Par ailleurs je ne sais pas si cela pose un réel problème d'oublier des connexions. Je suppose que la mobilisation de ressource pour maintenir une connexion ssh est négligeable, mais existe-t-il des problèmes de sécurité ?

Merci @Christophe_Antoniews, nous allons le considérer avec le reste de la team.

Ca n'a pas l'air d'être un sujet très sensible. En tout cas il n'a pas déchainé les contributions...

Salut,

Attention /etc/ssh/ssh_config c'est la configuration client. Ca veux dire que ca n'impacte que les connexion en tant que client vers un autre serveur.

Pour modifier le comportement du serveur c'est le fichier /etc/ssh/sshd_config qu'il faut changer. Et a priori du coup l'option s'appel ClientAliveInterval