Comment utiliser tmux sur un VPS Linux

14 min de lecture·Matthieu|

Installez et utilisez tmux sur votre VPS Linux pour des sessions terminal persistantes, des workflows multi-panes et une protection contre les deconnexions SSH. Compatible Debian 12 et Ubuntu 24.04.

Vous vous connectez en SSH a votre VPS, vous lancez une longue migration de base de donnees, et votre Wi-Fi coupe. Le processus meurt. Votre travail est perdu.

tmux resout ce probleme. Il execute vos sessions terminal directement sur le serveur, independamment de votre connexion SSH. Deconnectez-vous, reconnectez-vous, et reprenez exactement la ou vous en etiez.

Ce tutoriel couvre tmux de l'installation aux layouts scriptes multi-panes. Toutes les commandes fonctionnent sur Debian 12 et Ubuntu 24.04.

Qu'est-ce que tmux et pourquoi l'utiliser sur un VPS ?

tmux est un terminal multiplexer (multiplexeur de terminaux). Il permet d'executer plusieurs sessions terminal dans une seule connexion SSH, et ces sessions persistent sur le serveur meme apres une deconnexion.

tmux organise votre travail sur trois niveaux :

  • Sessions : le conteneur de plus haut niveau. Chaque session est un espace de travail independant. Vous pouvez vous detacher d'une session et vous y rattacher plus tard.
  • Windows (fenetres) : elles vivent a l'interieur des sessions. Pensez-y comme des onglets. Chaque window execute son propre shell.
  • Panes (panneaux) : ils divisent une window en plusieurs rectangles, chacun executant sa propre commande.
Session "deploy"
  ├── Window 0: "editor"
  │     ├── Pane 0: vim
  │     └── Pane 1: file watcher
  └── Window 1: "logs"
        └── Pane 0: journalctl -f

Sur un VPS, tmux apporte trois avantages concrets :

  1. Protection contre les deconnexions SSH. Vos processus continuent de tourner quand la connexion tombe. Reconnectez-vous et rattachez la session.
  2. Workflows multi-panes. Surveillez les logs dans un pane, lancez des commandes dans un autre, editez des fichiers dans un troisieme. Le tout dans une seule connexion SSH.
  3. Persistance des sessions. Laissez une session tourner pendant des jours. Detachez-vous en fin de journee, rattachez-vous le lendemain.

Comment installer tmux sur Debian 12 et Ubuntu 24.04 ?

tmux est dans les depots par defaut de Debian 12 et Ubuntu 24.04. Une seule commande suffit.

sudo apt update && sudo apt install -y tmux

Verifiez l'installation :

tmux -V

Sortie attendue sur Debian 12 :

tmux 3.3a

Sortie attendue sur Ubuntu 24.04 :

tmux 3.4

A noter : le numero de version confirme que tmux a ete installe depuis les depots officiels. Si vous ne voyez rien ou « command not found », l'installation a echoue. Verifiez la sortie de apt pour les erreurs.

Comment creer et gerer des sessions tmux ?

Une session tmux est un espace de travail persistant qui vit sur le serveur. Creez-en une, lancez vos commandes, et elle reste active meme si vous fermez votre terminal.

Creer des sessions

Demarrez une nouvelle session avec un nom :

tmux new-session -s deploy

Cela cree une session nommee « deploy » et vous y attache. Vous verrez une barre d'etat verte en bas de votre terminal. Cette barre confirme que vous etes dans une session tmux.

Pour creer une session sans s'y attacher (utile dans les scripts) :

tmux new-session -d -s background

Verifiez qu'elle existe :

tmux list-sessions
background: 1 windows (created Thu Mar 19 10:00:00 2026)

Comment se detacher d'une session tmux et se rattacher plus tard ?

C'est le workflow de base sur un VPS. Detachez-vous d'une session pour liberer votre terminal, puis rattachez-vous plus tard pour reprendre votre travail. La session continue de tourner sur le serveur.

Pour vous detacher, appuyez sur la prefix key (touche prefixe) suivie de d :

Ctrl-b  d

La prefix key par defaut est Ctrl-b. Appuyez sur Ctrl et b ensemble, relachez les deux, puis appuyez sur d. Tous les raccourcis tmux fonctionnent ainsi : prefixe d'abord, puis la touche d'action.

Votre terminal revient au shell classique. La session tourne toujours.

Pour vous rattacher :

tmux attach -t deploy

Si vous n'avez qu'une seule session, vous pouvez omettre le nom :

tmux attach

Verifiez quelles sessions sont en cours :

tmux list-sessions
deploy: 1 windows (created Thu Mar 19 10:00:00 2026) (attached)
background: 1 windows (created Thu Mar 19 10:05:00 2026)

Le label (attached) indique a quelle session votre terminal est connecte.

Supprimer des sessions

Quand vous avez fini avec une session, supprimez-la :

tmux kill-session -t background

Verifiez qu'elle a disparu :

tmux list-sessions

Pour supprimer toutes les sessions et arreter completement le serveur tmux :

tmux kill-server

Renommer des sessions

Depuis l'interieur d'une session, appuyez sur :

Ctrl-b  $

Tapez le nouveau nom et appuyez sur Entree. Utile quand vous avez demarre une session sans nom et que tmux lui a attribue un numero.

Comment utiliser les windows tmux pour organiser ses taches ?

Les windows sont des onglets au sein d'une session. Chaque window execute son propre shell. Utilisez-les pour separer les taches qui n'ont pas besoin d'etre visibles en meme temps.

Creez une nouvelle window :

Ctrl-b  c

La barre d'etat se met a jour pour afficher la nouvelle window. L'asterisque (*) marque la window active :

[deploy] 0:bash  1:bash*

Par numero :

Ctrl-b  0    # Go to window 0
Ctrl-b  1    # Go to window 1

En cyclant :

Ctrl-b  n    # Next window
Ctrl-b  p    # Previous window

Renommer une window

Ctrl-b  ,

Tapez un nom parlant comme « logs » ou « editor » et appuyez sur Entree. Des windows nommees rendent la barre d'etat lisible quand vous en avez plusieurs.

Fermer une window

Tapez exit dans le shell, ou appuyez sur :

Ctrl-b  &

tmux demande une confirmation avant de fermer.

Comment diviser le terminal en panes ?

Les panes divisent une window en plusieurs terminaux visibles simultanement. C'est la ou tmux brille pour l'administration VPS : surveillez les logs dans un pane pendant que vous lancez des commandes dans un autre.

Diviser le pane courant horizontalement (haut et bas) :

Ctrl-b  "

Diviser le pane courant verticalement (gauche et droite) :

Ctrl-b  %

Apres la division, vous avez deux panes. La bordure verte indique le pane actif.

Comment naviguer et redimensionner les panes tmux ?

Deplacez-vous entre les panes avec les touches flechees :

Ctrl-b  ↑    # Move to pane above
Ctrl-b  ↓    # Move to pane below
Ctrl-b  ←    # Move to pane left
Ctrl-b  →    # Move to pane right

Redimensionnez les panes en maintenant le prefixe et en appuyant sur les touches flechees :

Ctrl-b  Ctrl-↑    # Resize pane up
Ctrl-b  Ctrl-↓    # Resize pane down
Ctrl-b  Ctrl-←    # Resize pane left
Ctrl-b  Ctrl-→    # Resize pane right

Zoomer sur un pane

Besoin d'un pane en plein ecran temporairement ? Basculez le zoom :

Ctrl-b  z

Appuyez a nouveau pour restaurer le layout divise. La barre d'etat affiche un Z a cote du nom de la window quand un pane est zoome.

Fermer un pane

Tapez exit dans le pane, ou appuyez sur :

Ctrl-b  x

tmux demande une confirmation. Si vous fermez le dernier pane d'une window, la window se ferme aussi.

Echanger des panes

Faites tourner les positions des panes :

Ctrl-b  {    # Move current pane left/up
Ctrl-b  }    # Move current pane right/down

Comment utiliser le copy mode pour defiler et rechercher ?

Par defaut, vous ne pouvez pas remonter dans un pane tmux avec la molette ou Page Up. Le copy mode vous donne le scrollback, la recherche et la selection de texte.

Entrez en copy mode :

Ctrl-b  [

Vous etes maintenant en copy mode. Le coin superieur droit affiche votre position dans le buffer de scrollback (par ex. [0/500]).

tmux utilise les raccourcis emacs par defaut. Si votre variable d'environnement EDITOR ou VISUAL contient « vi », il utilise les raccourcis vi a la place.

Mode emacs (par defaut) :

Action Touche
Defiler vers le haut Ctrl-Up ou Page Up
Defiler vers le bas Ctrl-Down ou Page Down
Deplacer le curseur Touches flechees
Debut de ligne Ctrl-a
Fin de ligne Ctrl-e
Recherche avant Ctrl-s
Recherche arriere Ctrl-r
Debut de selection Ctrl-Space
Copier la selection Alt-w
Quitter le copy mode q

Mode vi :

Action Touche
Defiler vers le haut Ctrl-u (demi-page)
Defiler vers le bas Ctrl-d (demi-page)
Deplacer le curseur h j k l
Recherche avant /
Recherche arriere ?
Debut de selection Space
Copier la selection Enter
Quitter le copy mode q

Apres avoir copie, collez avec :

Ctrl-b  ]

A noter : le copy mode sert aussi a chercher dans une longue sortie de commande. Si un build echoue et que l'erreur a defile hors de l'ecran, entrez en copy mode et cherchez en arriere avec Ctrl-r (emacs) ou ? (vi).

Comment personnaliser tmux avec .tmux.conf ?

tmux lit sa configuration depuis ~/.tmux.conf au demarrage du serveur. A partir de tmux 3.2, il verifie aussi ~/.config/tmux/tmux.conf.

Cette configuration fonctionne bien pour l'administration VPS. Chaque ligne est expliquee.

Creez ou editez le fichier de configuration :

nano ~/.tmux.conf
# -- General -----------------------------------------------------------------

# Change prefix from Ctrl-b to Ctrl-a (easier to reach)
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# Start window numbering at 1 (0 is far from the prefix key)
set -g base-index 1
setw -g pane-base-index 1

# Renumber windows when one is closed (no gaps)
set -g renumber-windows on

# Increase scrollback buffer (default is 2000 lines)
set -g history-limit 50000

# Reduce escape delay (snappier key response)
set -g escape-time 10

# Enable mouse support (scroll, click panes, resize)
set -g mouse on

# -- Display -----------------------------------------------------------------

# 256-color terminal support
set -g default-terminal "tmux-256color"

# -- Key Bindings ------------------------------------------------------------

# Split panes with | and - (more intuitive than " and %)
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %

# Navigate panes with Alt-arrow (no prefix needed)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Reload config with prefix r
bind r source-file ~/.tmux.conf \; display-message "Config reloaded"

# -- Copy Mode ---------------------------------------------------------------

# Use vi keys in copy mode
setw -g mode-keys vi

# -- Status Bar --------------------------------------------------------------

# Status bar position
set -g status-position bottom

# Update interval (seconds)
set -g status-interval 5

# Clean status bar colors
set -g status-style "bg=colour235,fg=colour136"
set -g status-left "#[fg=colour235,bg=colour136] #S #[fg=colour136,bg=colour235] "
set -g status-right "#[fg=colour136] %H:%M %d-%b-%Y "
set -g status-left-length 20

Sauvegardez et quittez. Appliquez la configuration a une session tmux en cours :

tmux source-file ~/.tmux.conf

Verifiez en appuyant sur Ctrl-a (le nouveau prefixe) au lieu de Ctrl-b. Si ca fonctionne, la configuration est chargee.

Definissez les bonnes permissions sur le fichier de configuration :

chmod 600 ~/.tmux.conf
ls -la ~/.tmux.conf
-rw------- 1 youruser youruser 1234 Mar 19 10:00 /home/youruser/.tmux.conf

La permission 600 signifie que seul votre utilisateur peut lire et ecrire le fichier. C'est pertinent si vous stockez des scripts ou des chemins sensibles dans votre configuration tmux.

Explication des changements par rapport aux valeurs par defaut :

  1. Prefixe Ctrl-a : la touche tombe sous votre petit doigt gauche. Ctrl-b oblige a etirer la main. C'est le rebind le plus courant.
  2. base-index 1 : les windows commencent a 1 au lieu de 0. Appuyer sur Ctrl-a 1 pour la premiere window est naturel.
  3. history-limit 50000 : stocke 50 000 lignes de scrollback par pane. Les 2 000 lignes par defaut sont insuffisantes pour du tail de logs.
  4. escape-time 10 : reduit le delai d'attente de tmux apres reception de la touche Echap. La valeur par defaut (500 ms) rend Vim lent a l'interieur de tmux.
  5. -c "#{pane_current_path}" sur les bindings de split : ouvre les nouveaux panes dans le repertoire courant, pas dans le repertoire home.
  6. mode-keys vi : bascule le copy mode en navigation vi. Changez pour emacs si vous preferez.

Comment installer des plugins tmux avec tpm ?

tmux Plugin Manager (tpm) permet d'installer des plugins depuis GitHub. Deux plugins a connaitre :

  • tmux-resurrect : sauvegarde et restaure les sessions tmux apres un redemarrage du serveur
  • tmux-continuum : sauvegarde automatique des sessions a intervalles reguliers

Installer tpm

Clonez le depot :

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

Ajoutez ces lignes en bas de ~/.tmux.conf :

# -- Plugins -----------------------------------------------------------------

# Plugin manager
set -g @plugin 'tmux-plugins/tpm'

# Save/restore sessions across reboots
set -g @plugin 'tmux-plugins/tmux-resurrect'

# Auto-save sessions every 15 minutes
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'

# Initialize tpm (keep this line at the very bottom)
run '~/.tmux/plugins/tpm/tpm'

Rechargez la configuration :

tmux source-file ~/.tmux.conf

Installez les plugins depuis l'interieur de tmux :

Ctrl-a  I

C'est un I majuscule. tpm telecharge et installe les plugins. Un message s'affiche quand c'est termine.

Verifiez que les plugins sont installes :

ls ~/.tmux/plugins/
tmux-continuum  tmux-resurrect  tpm

Utiliser tmux-resurrect

Sauvegardez le layout de votre session :

Ctrl-a  Ctrl-s

Restaurez apres un redemarrage :

Ctrl-a  Ctrl-r

tmux-resurrect sauvegarde les layouts de windows, les divisions de panes et le repertoire courant de chaque pane. Avec tmux-continuum active, cela se fait automatiquement toutes les 15 minutes.

Comment gerer les sessions tmux imbriquees via SSH ?

Quand vous lancez tmux localement et vous connectez en SSH a un VPS qui a aussi tmux, vous vous retrouvez avec tmux dans tmux. Les deux instances reagissent a la meme prefix key. Vos frappes vont au tmux externe (local) au lieu du tmux interne (distant).

La solution : envoyez la prefix key au tmux interne en appuyant deux fois sur le prefixe.

Ctrl-a  Ctrl-a  d    # Detach the inner (remote) session

Le premier Ctrl-a est capture par le tmux externe. Le second Ctrl-a est transmis au tmux interne comme son prefixe. Puis d detache la session interne.

Une approche plus propre : utilisez des prefix keys differentes. Gardez Ctrl-a localement et laissez Ctrl-b par defaut sur les serveurs distants. Pas de conflit.

Si vous avez deja change le prefixe des deux cotes, ajoutez un toggle dans votre ~/.tmux.conf local :

# Toggle prefix passthrough with F12
bind -T root F12 \
  set prefix None \;\
  set key-table off \;\
  set status-style "bg=colour238,fg=colour240" \;\
  display-message "Prefix OFF (sending to inner)"

bind -T off F12 \
  set -u prefix \;\
  set -u key-table \;\
  set -u status-style \;\
  display-message "Prefix ON (local)"

Appuyez sur F12 pour desactiver le prefixe local et transmettre toutes les touches au tmux distant. Appuyez a nouveau sur F12 pour le reactiver. La barre d'etat grisee vous donne un indicateur visuel du mode actif.

Comment creer des layouts tmux scriptes pour l'administration serveur ?

Au lieu de diviser manuellement les panes a chaque connexion SSH, scriptez votre layout. Cela cree un espace de travail reproductible en une seule commande.

Creez un script :

nano ~/tmux-admin.sh
#!/usr/bin/env bash
# tmux-admin.sh: three-pane admin layout

SESSION="admin"

# Kill old session if it exists
tmux kill-session -t "$SESSION" 2>/dev/null

# Create session with first window named "monitor"
tmux new-session -d -s "$SESSION" -n "monitor"

# Top pane: system monitoring
tmux send-keys -t "$SESSION:monitor" "htop" C-m

# Split horizontally: bottom pane for logs
tmux split-window -v -t "$SESSION:monitor"
tmux send-keys -t "$SESSION:monitor.1" "journalctl -f" C-m

# Split bottom pane vertically: right pane for shell
tmux split-window -h -t "$SESSION:monitor.1"

# Create second window for a working shell
tmux new-window -t "$SESSION" -n "work"

# Select the first window
tmux select-window -t "$SESSION:monitor"

# Select the bottom-right pane (the empty shell)
tmux select-pane -t "$SESSION:monitor.2"

# Attach to the session
tmux attach -t "$SESSION"

Rendez-le executable et lancez-le :

chmod 700 ~/tmux-admin.sh
~/tmux-admin.sh

Vous obtenez un layout a trois panes : htop en haut, journalctl -f en bas a gauche, et un shell vide en bas a droite. Une seconde window nommee « work » est disponible pour les commandes ponctuelles.

A noter : le C-m a la fin de send-keys est un retour chariot. Il appuie sur Entree pour executer la commande.

Demarrer tmux automatiquement au boot avec systemd

Pour des sessions d'administration longue duree, creez un service systemd :

sudo nano /etc/systemd/system/tmux-admin@.service
[Unit]
Description=tmux admin session for %i
After=network.target

[Service]
Type=forking
User=%i
ExecStart=/usr/bin/tmux new-session -d -s admin
ExecStop=/usr/bin/tmux kill-session -t admin

[Install]
WantedBy=multi-user.target

Activez et demarrez pour votre utilisateur :

sudo systemctl enable --now tmux-admin@youruser.service

Verifiez qu'il tourne :

sudo systemctl status tmux-admin@youruser.service
● tmux-admin@youruser.service - tmux admin session for youruser
     Loaded: loaded (/etc/systemd/system/tmux-admin@.service; enabled)
     Active: active (running)

Une session tmux nommee « admin » demarre maintenant automatiquement au boot. Attachez-vous apres votre connexion SSH :

tmux attach -t admin

Securite : permissions du socket tmux

tmux cree un fichier socket pour la communication entre ses processus serveur et client. Par defaut, ce socket se trouve dans un repertoire sous /tmp (par ex. /tmp/tmux-1000/).

Verifiez votre repertoire de socket :

ls -la /tmp/tmux-$(id -u)/
srwxrwx--- 1 youruser youruser 0 Mar 19 10:00 default

Le repertoire du socket appartient a votre utilisateur avec des permissions qui empechent les autres utilisateurs d'y acceder. Les autres utilisateurs sur le meme serveur ne peuvent donc pas se rattacher a vos sessions tmux.

Attention : si vous lancez tmux en root, tout processus root peut s'y attacher. Evitez de lancer tmux en root pour le travail quotidien. Connectez-vous avec votre utilisateur standard et utilisez sudo pour les commandes qui le necessitent.

Si vous devez partager une session tmux (pour du pair programming ou du mentorat), utilisez un socket partage explicitement :

tmux -S /tmp/shared-session new-session -s pair
chmod 770 /tmp/shared-session

L'autre utilisateur se rattache avec :

tmux -S /tmp/shared-session attach -t pair

Revoquez l'acces quand vous avez termine :

chmod 700 /tmp/shared-session

Quelque chose ne fonctionne pas ?

tmux: command not found Le paquet n'est pas installe. Lancez sudo apt install -y tmux et verifiez les erreurs.

"no server running on /tmp/tmux-1000/default" Aucune session tmux n'existe. Demarrez-en une avec tmux new-session -s main.

Les touches ne repondent pas / mauvais prefixe Verifiez quel prefixe est actif : tmux show-options -g prefix. Si vous avez change le prefixe dans .tmux.conf, rechargez avec tmux source-file ~/.tmux.conf.

Le scroll a la souris ne fonctionne pas Ajoutez set -g mouse on a ~/.tmux.conf et rechargez. Sur les versions de tmux anterieures a 2.1, l'option etait set -g mode-mouse on (syntaxe differente).

Les couleurs sont incorrectes dans tmux Ajoutez set -g default-terminal "tmux-256color" dans ~/.tmux.conf. Si votre emulateur de terminal supporte les vraies couleurs (24 bits), ajoutez :

set -as terminal-overrides ",*-256color:Tc"

Session perdue apres un redemarrage Les sessions tmux ne survivent pas aux redemarrages par defaut. Utilisez tmux-resurrect et tmux-continuum (traites plus haut), ou creez un service systemd pour demarrer une session automatiquement.

Vim est lent a quitter le mode insertion La valeur par defaut de escape-time (500 ms) cause ce probleme. Ajoutez set -g escape-time 10 dans ~/.tmux.conf.

Consultez les logs tmux pour des problemes plus profonds :

tmux start-server \; show-messages

Ou verifiez les logs systeme :

journalctl -u tmux-admin@youruser.service -f

Aide-memoire des raccourcis tmux

Ce tableau utilise le prefixe par defaut Ctrl-b. Si vous avez change le prefixe pour Ctrl-a (comme dans la configuration ci-dessus), utilisez celui-ci a la place.

Sessions

Action Raccourci Commande
Nouvelle session nommee tmux new-session -s name
Se detacher Ctrl-b d tmux detach
Lister les sessions Ctrl-b s tmux list-sessions
Se rattacher tmux attach -t name
Renommer une session Ctrl-b $ tmux rename-session
Supprimer une session tmux kill-session -t name

Windows

Action Raccourci Commande
Nouvelle window Ctrl-b c
Window suivante Ctrl-b n
Window precedente Ctrl-b p
Window par numero Ctrl-b 0-9
Renommer une window Ctrl-b ,
Fermer une window Ctrl-b &
Lister les windows Ctrl-b w

Panes

Action Raccourci Commande
Split horizontal Ctrl-b "
Split vertical Ctrl-b %
Naviguer Ctrl-b Arrow
Redimensionner Ctrl-b Ctrl-Arrow
Zoom toggle Ctrl-b z
Fermer un pane Ctrl-b x
Echanger un pane Ctrl-b { / Ctrl-b }

Copy Mode

Action Raccourci
Entrer en copy mode Ctrl-b [
Coller le buffer Ctrl-b ]
Recherche (emacs) Ctrl-r (arriere) / Ctrl-s (avant)
Recherche (vi) ? (arriere) / / (avant)
Quitter q

Divers

Action Raccourci
Invite de commande Ctrl-b :
Lister tous les raccourcis Ctrl-b ?
Mode horloge Ctrl-b t

Copyright 2026 Virtua.Cloud. Tous droits reserves. Ce contenu est une creation originale de l'equipe Virtua.Cloud. Toute reproduction, republication ou redistribution sans autorisation ecrite est interdite.

Prêt à essayer ?

Déployez votre serveur en quelques secondes. Linux, Windows ou FreeBSD.

Voir les offres VPS