Comment utiliser tmux sur un VPS Linux
Installez et utilisez tmux sur votre VPS Linux pour des sessions terminal persistantes, des workflows multi-panes et une protection contre les déconnexions SSH. Compatible Debian 12 et Ubuntu 24.04.
Vous vous connectez en SSH à votre VPS, vous lancez une longue migration de base de données, et votre Wi-Fi coupe. Le processus meurt. Votre travail est perdu.
tmux résout ce problème. Il exécute vos sessions terminal directement sur le serveur, indépendamment de votre connexion SSH. Déconnectez-vous, reconnectez-vous, et reprenez exactement là où vous en étiez.
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'exécuter plusieurs sessions terminal dans une seule connexion SSH, et ces sessions persistent sur le serveur même après une déconnexion.
tmux organise votre travail sur trois niveaux :
- Sessions : le conteneur de plus haut niveau. Chaque session est un espace de travail indépendant. Vous pouvez vous détacher d'une session et vous y rattacher plus tard.
- Windows (fenêtres) : elles vivent à l'intérieur des sessions. Pensez-y comme des onglets. Chaque window exécute son propre shell.
- Panes (panneaux) : ils divisent une window en plusieurs rectangles, chacun exécutant 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 :
- Protection contre les déconnexions SSH. Vos processus continuent de tourner quand la connexion tombe. Reconnectez-vous et rattachez la session.
- Workflows multi-panes. Surveillez les logs dans un pane, lancez des commandes dans un autre, éditez des fichiers dans un troisième. Le tout dans une seule connexion SSH.
- Persistance des sessions. Laissez une session tourner pendant des jours. Détachez-vous en fin de journée, rattachez-vous le lendemain.
Comment utiliser GNU Screen sur un VPS Linux
Comment installer tmux sur Debian 12 et Ubuntu 24.04 ?
tmux est dans les dépôts par défaut de Debian 12 et Ubuntu 24.04. Une seule commande suffit.
sudo apt update && sudo apt install -y tmux
Contrôlez l'installation :
tmux -V
Sortie attendue sur Debian 12 :
tmux 3.3a
Sortie attendue sur Ubuntu 24.04 :
tmux 3.4
Le numéro de version confirme que tmux a été installé depuis les dépôts officiels. Si vous ne voyez rien ou « command not found », l'installation a échoué. Vérifiez la sortie de apt pour les erreurs.
Comment créer et gérer des sessions tmux ?
Une session tmux est un espace de travail persistant qui vit sur le serveur. Créez-en une, lancez vos commandes, et elle reste active même si vous fermez votre terminal.
Créer des sessions
Démarrez une nouvelle session avec un nom :
tmux new-session -s deploy
Cela crée une session nommée « deploy » et vous y attache. Une barre d'état verte apparaît en bas de votre terminal, confirmant que vous êtes dans une session tmux.
Pour créer une session sans s'y attacher (utile dans les scripts) :
tmux new-session -d -s background
Vérifiez qu'elle existe :
tmux list-sessions
background: 1 windows (created Thu Mar 19 10:00:00 2026)
Comment se détacher d'une session tmux et se rattacher plus tard ?
C'est le workflow de base sur un VPS. Détachez-vous d'une session pour libérer votre terminal, puis rattachez-vous plus tard pour reprendre votre travail. La session continue de tourner sur le serveur.
Pour vous détacher, appuyez sur la prefix key (touche préfixe) suivie de d :
Ctrl-b d
La prefix key par défaut est Ctrl-b. Appuyez sur Ctrl et b ensemble, relâchez les deux, puis appuyez sur d. Tous les raccourcis tmux fonctionnent ainsi : préfixe 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
Vérifiez 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 à quelle session votre terminal est connecté.
Supprimer des sessions
Quand vous avez fini avec une session, supprimez-la :
tmux kill-session -t background
Vérifiez qu'elle a disparu :
tmux list-sessions
Pour supprimer toutes les sessions et arrêter complètement le serveur tmux :
tmux kill-server
Renommer des sessions
Depuis l'intérieur d'une session, appuyez sur :
Ctrl-b $
Tapez le nouveau nom et appuyez sur Entrée. Utile quand vous avez démarré une session sans nom et que tmux lui a attribué un numéro.
Comment utiliser les windows tmux pour organiser ses tâches ?
Les windows sont des onglets au sein d'une session. Chaque window exécute son propre shell. Utilisez-les pour séparer les tâches qui n'ont pas besoin d'être visibles en même temps.
Créez une nouvelle window :
Ctrl-b c
La barre d'état se met à jour pour afficher la nouvelle window. L'asterisque (*) marque la window active :
[deploy] 0:bash 1:bash*
Naviguer entre les windows
Par numéro :
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 Entrée. Des windows nommées rendent la barre d'état 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 simultanément. C'est là où 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 %
Après la division, vous avez deux panes. La bordure verte indique le pane actif.
Comment naviguer et redimensionner les panes tmux ?
Déplacez-vous entre les panes avec les touches fléchées :
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 préfixe et en appuyant sur les touches fléchées :
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 écran temporairement ? Basculez le zoom :
Ctrl-b z
Appuyez à nouveau pour restaurer le layout divisé. La barre d'état affiche un Z a côté du nom de la window quand un pane est zoomé.
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.
Échanger 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 défiler et rechercher ?
Par défaut, 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 sélection de texte.
Entrez en copy mode :
Ctrl-b [
Vous êtes maintenant en copy mode. Le coin supérieur droit affiche votre position dans le buffer de scrollback (par ex. [0/500]).
Naviguer en copy mode
tmux utilise les raccourcis emacs par défaut. Si votre variable d'environnement EDITOR ou VISUAL contient « vi », il utilise les raccourcis vi à la place.
Mode emacs (par défaut) :
| Action | Touche |
|---|---|
| Défiler vers le haut | Ctrl-Up ou Page Up |
| Défiler vers le bas | Ctrl-Down ou Page Down |
| Déplacer le curseur | Touches fléchées |
| Début de ligne | Ctrl-a |
| Fin de ligne | Ctrl-e |
| Recherche avant | Ctrl-s |
| Recherche arrière | Ctrl-r |
| Début de sélection | Ctrl-Space |
| Copier la sélection | Alt-w |
| Quitter le copy mode | q |
Mode vi :
| Action | Touche |
|---|---|
| Défiler vers le haut | Ctrl-u (demi-page) |
| Défiler vers le bas | Ctrl-d (demi-page) |
| Déplacer le curseur | h j k l |
| Recherche avant | / |
| Recherche arrière | ? |
| Début de sélection | Space |
| Copier la sélection | Enter |
| Quitter le copy mode | q |
Après avoir copié, collez avec :
Ctrl-b ]
Usage pratique : le copy mode sert aussi à chercher dans une longue sortie de commande. Si un build a échoué et que l'erreur a défilé hors de l'écran, entrez en copy mode et cherchez en arrière avec Ctrl-r (emacs) ou ? (vi).
Comment personnaliser tmux avec .tmux.conf ?
tmux lit sa configuration depuis ~/.tmux.conf au démarrage du serveur. À partir de tmux 3.2, il vérifie aussi ~/.config/tmux/tmux.conf.
Cette configuration fonctionne bien pour l'administration VPS. Chaque ligne est expliquée.
Créez ou éditez 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 à une session tmux en cours :
tmux source-file ~/.tmux.conf
Vérifiez en appuyant sur Ctrl-a (le nouveau préfixe) au lieu de Ctrl-b. Si ça fonctionne, la configuration est chargée.
Définissez 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 écrire 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 défaut :
- Préfixe
Ctrl-a: la touche tombe sous votre petit doigt gauche.Ctrl-boblige à étirer la main. C'est le rebind le plus courant. base-index 1: les windows commencent à 1 au lieu de 0. Appuyer surCtrl-a 1pour la première window est naturel.history-limit 50000: stocke 50 000 lignes de scrollback par pane. Les 2 000 lignes par défaut sont insuffisantes pour du tail de logs.escape-time 10: réduit le délai d'attente de tmux après réception de la touche Echap. La valeur par défaut (500 ms) rend Vim lent à l'intérieur de tmux.-c "#{pane_current_path}"sur les bindings de split : ouvre les nouveaux panes dans le répertoire courant, pas dans le répertoire home.mode-keys vi: bascule le copy mode en navigation vi. Changez pouremacssi vous préférez.
Comment installer des plugins tmux avec tpm ?
tmux Plugin Manager (tpm) permet d'installer des plugins depuis GitHub. Deux plugins à connaître :
- tmux-resurrect : sauvegarde et restaure les sessions tmux après un redémarrage du serveur
- tmux-continuum : sauvegarde automatique des sessions à intervalles réguliers
Installer tpm
Clonez le dépôt :
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'intérieur de tmux :
Ctrl-a I
C'est un I majuscule. tpm télécharge et installe les plugins. Un message s'affiche quand c'est terminé.
Assurez-vous que les plugins sont installés :
ls ~/.tmux/plugins/
tmux-continuum tmux-resurrect tpm
Utiliser tmux-resurrect
Sauvegardez le layout de votre session :
Ctrl-a Ctrl-s
Restaurez après un redémarrage :
Ctrl-a Ctrl-r
tmux-resurrect sauvegarde les layouts de windows, les divisions de panes et le répertoire courant de chaque pane. Avec tmux-continuum activé, cela se fait automatiquement toutes les 15 minutes.
Comment gérer les sessions tmux imbriquées via SSH ?
Quand vous lancez tmux localement et vous connectez en SSH à un VPS qui a aussi tmux, vous vous retrouvez avec tmux dans tmux. Les deux instances réagissent à la même 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 préfixe.
Ctrl-a Ctrl-a d # Detach the inner (remote) session
Le premier Ctrl-a est capturé par le tmux externe. Le second Ctrl-a est transmis au tmux interne comme son préfixe. Puis d détaché la session interne.
Une approche plus propre : utilisez des prefix keys différentes. Gardez Ctrl-a localement et laissez Ctrl-b par défaut sur les serveurs distants. Pas de conflit.
Si vous avez déjà changé le préfixe des deux côtés, 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 désactiver le préfixe local et transmettre toutes les touches au tmux distant. Appuyez à nouveau sur F12 pour le réactiver. La barre d'état grisée vous donne un indicateur visuel du mode actif.
Comment créer des layouts tmux scriptes pour l'administration serveur ?
Au lieu de diviser manuellement les panes à chaque connexion SSH, scriptez votre layout. Cela crée un espace de travail reproductible en une seule commande.
Créez 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 exécutable et lancez-le :
chmod 700 ~/tmux-admin.sh
~/tmux-admin.sh
Vous obtenez un layout à trois panes : htop en haut, journalctl -f en bas à gauche, et un shell vide en bas à droite. Une seconde window nommée « work » est disponible pour les commandes ponctuelles.
Le C-m à la fin de send-keys est un retour chariot. Il appuie sur Entrée pour exécuter la commande.
Démarrer tmux automatiquement au boot avec systemd
Pour des sessions d'administration longue durée, créez 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 démarrez pour votre utilisateur :
sudo systemctl enable --now tmux-admin@youruser.service
Vérifiez 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 nommée « admin » démarre maintenant automatiquement au boot. Attachez-vous après votre connexion SSH :
tmux attach -t admin
Sécurité : permissions du socket tmux
tmux crée un fichier socket pour la communication entre ses processus serveur et client. Par défaut, ce socket se trouve dans un répertoire sous /tmp (par ex. /tmp/tmux-1000/).
Vérifiez votre répertoire de socket :
ls -la /tmp/tmux-$(id -u)/
srwxrwx--- 1 youruser youruser 0 Mar 19 10:00 default
Le répertoire du socket appartient à votre utilisateur avec des permissions qui empêchent les autres utilisateurs d'y accéder. Les autres utilisateurs sur le même 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. Évitez de lancer tmux en root pour le travail quotidien. Connectez-vous avec votre utilisateur standard et utilisez sudo pour les commandes qui le nécessitent.
Si vous devez partager une session tmux (pour du pair programming ou du mentorat), utilisez un socket partagé 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
Révoquez l'accès quand vous avez terminé :
chmod 700 /tmp/shared-session
Quelque chose ne fonctionne pas ?
tmux: command not found
Le paquet n'est pas installé. Lancez sudo apt install -y tmux et vérifiez les erreurs.
"no server running on /tmp/tmux-1000/default"
Aucune session tmux n'existe. Démarrez-en une avec tmux new-session -s main.
Les touches ne répondent pas / mauvais préfixe
Vérifiez quel préfixe est actif : tmux show-options -g prefix. Si vous avez changé le préfixe dans .tmux.conf, rechargez avec tmux source-file ~/.tmux.conf.
Le scroll à la souris ne fonctionne pas
Ajoutez set -g mouse on à ~/.tmux.conf et rechargez. Sur les versions de tmux antérieures à 2.1, l'option était set -g mode-mouse on (syntaxe différente).
Les couleurs sont incorrectes dans tmux
Ajoutez set -g default-terminal "tmux-256color" dans ~/.tmux.conf. Si votre émulateur de terminal supporte les vraies couleurs (24 bits), ajoutez :
set -as terminal-overrides ",*-256color:Tc"
Session perdue après un redémarrage Les sessions tmux ne survivent pas aux redémarrages par défaut. Utilisez tmux-resurrect et tmux-continuum (traités plus haut), ou créez un service systemd pour démarrer une session automatiquement.
Vim est lent à quitter le mode insertion
La valeur par défaut de escape-time (500 ms) cause ce problème. Ajoutez set -g escape-time 10 dans ~/.tmux.conf.
Consultez les logs tmux pour des problèmes plus profonds :
tmux start-server \; show-messages
Ou vérifiez les logs système :
journalctl -u tmux-admin@youruser.service -f
Aide-mémoire des raccourcis tmux
Ce tableau utilise le préfixe par défaut Ctrl-b. Si vous avez changé le préfixe pour Ctrl-a (comme dans la configuration ci-dessus), utilisez celui-ci à la place.
Sessions
| Action | Raccourci | Commande |
|---|---|---|
| Nouvelle session nommée | tmux new-session -s name |
|
| Se détacher | 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 précédente | Ctrl-b p |
|
| Window par numéro | 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 |
|
| Échanger 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 (arrière) / Ctrl-s (avant) |
| Recherche (vi) | ? (arrière) / / (avant) |
| Quitter | q |
Divers
| Action | Raccourci |
|---|---|
| Invite de commande | Ctrl-b : |
| Lister tous les raccourcis | Ctrl-b ? |
| Mode horloge | Ctrl-b t |
Si vous passez du temps dans le terminal, consultez notre guide Comment utiliser Vim sur un VPS Linux.
Prêt à essayer ?
Obtenez un VPS Linux pret en quelques secondes. →