Voici comment éviter de se faire déconnecter par un serveur SSH lors de l'exécution de commandes longues.
J'ai récemment du résoudre une problématique d'exécution de scripts longs dans un contexte de déploiements par GitLab. Le script de déploiement est très spécifique à un client et il nécessite de lancer une série de commande par SSH.
Si les commandes venaient à durer trop longtemps, la connexion était perdue et je perdais l'accès à l'information d'une commande bien exécutée ou non.
J'ai dû passer une option en plus à la commande ssh pour cela, il s'agit l'option ServerAliveInterval [DURÉE]. Concrètement, elle renvoi un paquet au serveur régulièrement pour lui confirmer que l'on est toujours bien présents et que l'on attend juste que notre commande se termine !
Voici un exemple d'utilisation :
ssh -o "ServerAliveInterval 60" utilisateur@serveur.url "echo PREMIERE_COMMANDE &&
cd PATH &&
..."
Une autre solution peut consister à se tourner vers l'utilitaire "screen" qui permet de lancer un terminal, s'y connecter, lancer la commande à executer, "s'en détacher" et y revenir pour voir si la commande est terminée.
Je n'ai pas mis en œuvre cette technique, je pense qu'une limite peut être de récupérer l'état de l'avancement si vous voulez lancer ces commandes longues via une forge de déploiement / intégration en continu.
Ce site liste plusieurs autres techniques. À choisir selon vos besoins : https://www.tecmint.com/keep-remote-ssh-sessions-running-after-disconnection/