Pourquoi vous devriez utiliser Tmux pour les connexions SSH instables
Avez-vous déjà été en train d'exécuter une tâche longue sur un serveur distant, pour ensuite perdre votre connexion SSH à mi-chemin ? Cela m'est arrivé plusieurs fois. Dans cet article, je vais partager comment Tmux a sauvé mon travail lorsque SSH ne cessait de se déconnecter et pourquoi vous devriez l'utiliser pour les connexions SSH instables sous Linux.
Le Problème
L'autre jour, je téléchargeais une grande sauvegarde de base de données depuis un serveur distant. C'était un gros fichier et le téléchargement allait prendre des heures.
Pendant qu'il fonctionnait, notre réseau a commencé à avoir des problèmes. Ma connexion SSH se déconnectait constamment. Le réseau était instable.
Normalement, si la connexion se rompt, le téléchargement s'arrête aussi. Cela signifie que je devrais recommencer.
Mais cette fois, tout allait bien. Le téléchargement a continué.
Pourquoi ?
Parce que j'exécutais la tâche de sauvegarde à l'intérieur d'une session tmux !
Qu'est-ce que Tmux ?
Tmux est un multiplexeur de terminal qui vous permet d'exécuter plusieurs sessions de terminal dans une seule fenêtre. Il vous permet de gérer et de passer d'une tâche à l'autre, de maintenir les processus en cours d'exécution en arrière-plan, et même de vous reconnecter aux sessions si votre connexion est interrompue.
Tmux est particulièrement utile pour le travail à distance via SSH, car il permet à vos commandes de continuer à s'exécuter même lorsque la connexion est instable. Vous pouvez quitter une session et revenir plus tard. Votre travail est toujours là.
Comment Tmux m'a aidé pendant des connexions SSH instables
Avant de commencer le téléchargement, j'ai ouvert une nouvelle session tmux en utilisant la commande suivante :
tmux new -s backup_taskPuis j'ai commencé le téléchargement à l'intérieur de cette session tmux, en utilisant une commande comme :
wget https://example.com/big-database.sql.gzPlus tard, lorsque ma connexion SSH a été interrompue, je me suis reconnecté et j'ai exécuté :
tmux attach -t backup_taskEt juste comme ça, j'étais de retour là où je m'étais arrêté. Le téléchargement était toujours en cours. Je n'avais perdu aucun progrès.
J'ai également mis en place une solution simple pour démarrer automatiquement une session tmux sur un système distant lors de la connexion via SSH. Cela s'est avéré utile à plusieurs reprises lorsque j'avais oublié de démarrer la session tmux initialement.
Si vous êtes intéressé, consultez le lien suivant pour savoir comment je l'ai fait :
- Comment démarrer automatiquement une session Tmux sur un système distant lors de la connexion via SSH sous Linux
Pourquoi je recommande Tmux
Si vous travaillez sur des serveurs distants ou utilisez beaucoup SSH, tmux est un outil très utile. Il aide de plusieurs manières :
- Maintient votre travail en cours, même si la connexion tombe,
- Vous permet de partir et de revenir plus tard,
- Vous permet de diviser votre écran en plusieurs parties,
- Facilite le défilement, la copie et le collage.
La prochaine fois que vous êtes sur le point d'exécuter quelque chose d'important à distance, n'oubliez pas de lancer tmux new -s my_session avant d'appuyer sur Entrée. Votre futur vous remerciera lorsque le Wi-Fi vous trahira.
J'utilise personnellement tmux, mais vous pouvez également utiliser screen, un autre bon multiplexeur de terminal. Les deux, tmux et screen, sont des outils fiables pour gérer les sessions de terminal.
Quand Tmux ne peut pas aider
Tmux est une bouée de sauvetage pour les commandes exécutées sur le serveur distant (comme installer des logiciels ou télécharger des fichiers vers le serveur).
Mais si votre tâche dépend de votre connexion SSH locale, comme télécharger un fichier depuis le serveur vers votre ordinateur portable, alors Tmux ne vous sauvera pas.
Par exemple, si vous essayez de télécharger un fichier du serveur distant vers votre machine locale (par exemple, scp server:file.txt .), le transfert échouera lorsque SSH sera interrompu. Parce que votre machine locale est le récepteur.
Tmux ne sera utile que dans le scénario suivant.
Par exemple, supposons que vous accédez à votre serveur distant via SSH. Vous ouvrez une session tmux et commencez à télécharger un fichier d'Internet vers votre serveur distant (par exemple, wget ou curl sur le serveur).
Après un certain temps, la connexion SSH de votre ordinateur local au serveur distant se déconnecte. Que se passe-t-il maintenant ?
Le téléchargement continue sans interruption sur le serveur distant car Tmux le maintient en cours d'exécution. Lorsque vous vous reconnectez via SSH plus tard, vous pouvez rattacher la session Tmux et vérifier l'avancement du téléchargement.
Le téléchargement dépend de la connexion Internet du serveur distant, et non de votre connexion SSH locale.
Tmux agit comme un « bouclier » pour le terminal du serveur distant. Il ne se soucie pas si votre SSH local se déconnecte.
Point clé :
Tmux ne sauvegardera pas les transferts qui dépendent de votre connexion SSH locale, mais il peut protéger les opérations côté serveur (comme récupérer un fichier sur le serveur). Pour les téléchargements sur votre machine locale, utilisez des outils comme rsync --partial ou récupérez d'abord le fichier sur le serveur.
- Reprendre le transfert partiel de fichiers via SSH en utilisant Rsync
J'espère que cela vous aidera à comprendre ce que tmux peut et ne peut pas faire. Dans les sections suivantes, je vais vous expliquer comment commencer avec tmux.
Comment commencer à utiliser Tmux
Installer Tmux
Tmux est disponible dans les dépôts par défaut de la plupart des distributions Linux.
Sur Debian, Ubuntu et ses dérivés, vous pouvez installer tmux en utilisant la commande :
sudo apt install tmuxSur Fedora, RHEL :
sudo dnf install tmuxUtilisation de base de Tmux
Commencer une nouvelle session :
tmux new -s mysessionCeci va démarrer une nouvelle session appelée "mysession". À l'intérieur, vous pouvez exécuter vos commandes.
Ensuite, détachez-vous de la session en appuyant sur Ctrl + b, puis d. Ne vous inquiétez pas, les commandes continueront de s'exécuter à l'intérieur de la session tmux.
Vous pouvez vous rattacher plus tard en utilisant la commande :
tmux attach -t mysessionMerci, développeurs de Tmux
Je veux remercier tous ceux qui travaillent sur tmux et d'autres outils similaires. Ces projets ne reçoivent pas beaucoup d'attention, mais ils jouent un rôle très important dans l'administration système.
Si vous utilisez souvent le terminal, je recommande vivement d'essayer tmux ou screen. Les deux sont faciles à apprendre et peuvent aider à protéger votre travail en cas de problème.
Lecture recommandée :
- Améliorer la connexion SSH avec un menu de sélection de session Tmux sous Linux
- Comment démarrer automatiquement une session Screen sur Linux lors de la connexion
- Reptyr – Déplacer un processus en cours d'exécution d'un terminal à un autre sans le fermer