Cómo usar tmux en un VPS Linux

13 min de lectura·Matthieu·tmuxterminallinuxsshvps-administration|

Aprende a instalar y usar tmux en tu VPS Linux para sesiones de terminal persistentes, paneles divididos y protección ante desconexiones SSH. Cubre Debian 12 y Ubuntu 24.04.

Te conectas por SSH a tu VPS, lanzas una migración de base de datos larga y se cae el Wi-Fi. El proceso muere. Tu trabajo se pierde.

tmux resuelve esto. Ejecuta tus sesiones de terminal en el propio servidor, independientes de tu conexión SSH. Desconéctate, reconéctate y retoma exactamente donde lo dejaste.

Este tutorial cubre tmux desde la instalación hasta layouts multi-panel con scripts. Todos los comandos funcionan en Debian 12 o Ubuntu 24.04.

¿Qué es tmux y por qué usarlo en un VPS?

tmux es un terminal multiplexer (multiplexor de terminal). Te permite ejecutar varias sesiones de terminal dentro de una sola conexión SSH, y esas sesiones persisten en el servidor incluso cuando te desconectas.

tmux organiza tu trabajo en tres niveles:

  • Sessions (sesiones) son el contenedor de nivel superior. Cada sesión es un espacio de trabajo independiente. Puedes desconectarte de una sesión y volver a ella después.
  • Windows (ventanas) viven dentro de las sesiones. Piensa en ellas como pestañas. Cada ventana ejecuta su propio shell.
  • Panes (paneles) dividen una ventana en varios rectángulos, cada uno ejecutando su propio comando.
Session "deploy"
  ├── Window 0: "editor"
  │     ├── Pane 0: vim
  │     └── Pane 1: file watcher
  └── Window 1: "logs"
        └── Pane 0: journalctl -f

En un VPS, tmux te da tres cosas que importan:

  1. Proteccion ante desconexiones SSH. Tus procesos siguen ejecutándose cuando la conexión se cae. Reconéctate y vuelve a la sesión.
  2. Flujos de trabajo multi-panel. Monitoriza logs en un panel, ejecuta comandos en otro, edita archivos en un tercero. Todo dentro de una sola conexión SSH.
  3. Persistencia de sesiones. Deja una sesión ejecutándose durante días. Desconéctate al final del día, reconéctate mañana.

Cómo usar GNU Screen en un VPS Linux

¿Cómo instalar tmux en Debian 12 y Ubuntu 24.04?

tmux está en los repositorios por defecto tanto de Debian 12 como de Ubuntu 24.04. Un solo comando lo instala.

sudo apt update && sudo apt install -y tmux

Verifica la instalación:

tmux -V

Salida esperada en Debian 12:

tmux 3.3a

Salida esperada en Ubuntu 24.04:

tmux 3.4

Atención: el número de version confirma que tmux se instaló desde los repositorios oficiales. Si no ves nada o aparece "command not found", la instalación falló. Revisa la salida de apt en busca de errores.

¿Cómo crear y gestionar sesiones de tmux?

Una sesión de tmux es un espacio de trabajo persistente que vive en el servidor. Inicia una, ejecuta tus comandos y permanece activa incluso si cierras tu terminal.

Crear sesiones

Inicia una nueva sesión con nombre:

tmux new-session -s deploy

Esto crea una sesión llamada "deploy" y te conecta a ella. Verás una barra de estado verde en la parte inferior de tu terminal. Esa barra de estado es tmux confirmando que estas dentro de una sesión.

Para crear una sesión sin conectarte a ella (útil en scripts):

tmux new-session -d -s background

Verifica que existe:

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

¿Cómo desconectarme de una sesión tmux y reconectarme después?

Este es el flujo de trabajo principal en un VPS. Desconéctate de una sesión para liberar tu terminal y reconéctate después para retomar tu trabajo. La sesión sigue ejecutándose en el servidor.

Para desconectarte, pulsa la tecla prefijo seguida de d:

Ctrl-b  d

La tecla prefijo es Ctrl-b por defecto. Pulsa Ctrl y b juntos, suelta ambos y luego pulsa d. Todos los atajos de tmux funcionan así: primero el prefijo, después la tecla de acción.

Tu terminal vuelve al shell normal. La sesión sigue ejecutándose.

Para reconectarte:

tmux attach -t deploy

Si solo tienes una sesión, puedes omitir el nombre:

tmux attach

Verifica qué sesiones están ejecutándose:

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)

La etiqueta (attached) te indica a qué sesión está conectada tu terminal.

Eliminar sesiones

Cuando termines con una sesión, destrúyela:

tmux kill-session -t background

Verifica que ya no existe:

tmux list-sessions

Para eliminar todas las sesiones y detener el servidor tmux por completo:

tmux kill-server

Renombrar sesiones

Desde dentro de una sesión, pulsa:

Ctrl-b  $

Escribe el nuevo nombre y pulsa Enter. Útil cuando iniciaste una sesión sin nombre y tmux le asignó un número.

¿Cómo usar ventanas de tmux para organizar tareas?

Las ventanas son pestañas dentro de una sesión. Cada ventana ejecuta su propio shell. Úsalas para separar tareas que no necesitan estar visibles al mismo tiempo.

Crea una nueva ventana:

Ctrl-b  c

La barra de estado se actualiza para mostrar la nueva ventana. El asterisco (*) marca la ventana activa:

[deploy] 0:bash  1:bash*

Cambiar entre ventanas

Por número:

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

Ciclando:

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

Renombrar una ventana

Ctrl-b  ,

Escribe un nombre descriptivo como "logs" o "editor" y pulsa Enter. Las ventanas con nombre hacen que la barra de estado sea legible cuando tienes varias abiertas.

Cerrar una ventana

Escribe exit en el shell, o pulsa:

Ctrl-b  &

tmux pide confirmación antes de cerrar.

¿Cómo dividir el terminal en paneles?

Los paneles dividen una ventana en varios terminales visibles al mismo tiempo. Aquí es donde tmux brilla para la administración de VPS: observa logs en un panel mientras ejecutas comandos en otro.

Dividir el panel actual horizontalmente (arriba y abajo):

Ctrl-b  "

Dividir el panel actual verticalmente (izquierda y derecha):

Ctrl-b  %

Después de dividir, tienes dos paneles. El borde verde resalta el panel activo.

¿Cómo navegar y redimensionar paneles en tmux?

Muévete entre paneles con las teclas de flechas:

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

Redimensiona paneles manteniendo el prefijo y pulsando las teclas de flechas:

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

Hacer zoom en un panel

¿Necesitas un panel en pantalla completa temporalmente? Alterna el zoom:

Ctrl-b  z

Púlsalo de nuevo para restaurar el layout dividido. La barra de estado muestra una Z junto al nombre de la ventana cuando un panel está en zoom.

Cerrar un panel

Escribe exit en el panel, o pulsa:

Ctrl-b  x

tmux pide confirmación. Si cierras el último panel de una ventana, la ventana se cierra también.

Intercambiar paneles

Rota las posiciones de los paneles:

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

¿Cómo usar el modo copia de tmux para desplazarse y buscar?

Por defecto, no puedes desplazarte hacia arriba en un panel de tmux con la rueda del ratón o Page Up. El modo copia (copy mode) te da desplazamiento, búsqueda y selección de texto.

Entra en el modo copia:

Ctrl-b  [

Ahora estás en modo copia. La esquina superior derecha muestra tu posición en el buffer de desplazamiento (por ejemplo, [0/500]).

tmux usa teclas estilo emacs por defecto. Si tu variable de entorno EDITOR o VISUAL contiene "vi", usa teclas estilo vi en su lugar.

Modo emacs (por defecto):

Acción Tecla
Desplazar arriba Ctrl-Up o Page Up
Desplazar abajo Ctrl-Down o Page Down
Mover cursor Teclas de flechas
Inicio de línea Ctrl-a
Fin de línea Ctrl-e
Buscar adelante Ctrl-s
Buscar atrás Ctrl-r
Iniciar selección Ctrl-Space
Copiar selección Alt-w
Salir del modo copia q

Modo vi:

Acción Tecla
Desplazar arriba Ctrl-u (media página)
Desplazar abajo Ctrl-d (media página)
Mover cursor h j k l
Buscar adelante /
Buscar atrás ?
Iniciar selección Space
Copiar selección Enter
Salir del modo copia q

Después de copiar, pega con:

Ctrl-b  ]

Uso práctico: el modo copia es la forma de buscar en salidas largas de comandos. Si un build falla y el error desapareció de la pantalla, entra en modo copia y busca hacia atrás con Ctrl-r (emacs) o ? (vi).

¿Cómo personalizar tmux con .tmux.conf?

tmux lee su configuración desde ~/.tmux.conf cuando el servidor arranca. En tmux 3.2 y posteriores, también revisa ~/.config/tmux/tmux.conf.

Esta configuración funciona bien para administración de VPS. Cada línea está explicada.

Crea o edita el archivo de configuración:

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

Guarda y sal. Aplica la configuración a una sesión tmux en ejecución:

tmux source-file ~/.tmux.conf

Verifica pulsando Ctrl-a (el nuevo prefijo) en lugar de Ctrl-b. Si funciona, la configuración se cargó correctamente.

Establece los permisos adecuados en el archivo de configuración:

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

El permiso 600 significa que solo tu usuario puede leer y escribir el archivo. Esto es relevante si almacenas scripts personalizados o rutas sensibles en tu configuración de tmux.

Cambios principales respecto a los valores por defecto:

  1. Prefijo Ctrl-a pone la tecla bajo tu menique izquierdo. Ctrl-b requiere un estiramiento. Es el rebind más común.
  2. base-index 1 hace que las ventanas empiecen en 1 en lugar de 0. Pulsar Ctrl-a 1 para la primera ventana resulta natural.
  3. history-limit 50000 almacena 50.000 líneas de desplazamiento por panel. Las 2.000 por defecto son demasiado pocas para seguir logs.
  4. escape-time 10 reduce el tiempo que tmux espera tras recibir la tecla Escape. El valor por defecto (500ms) hace que Vim se sienta lento dentro de tmux.
  5. -c "#{pane_current_path}" en los bindings de división abre nuevos paneles en el directorio en el que te encuentras, en lugar del directorio home.
  6. mode-keys vi cambia el modo copia a navegación estilo vi. Cámbialo a emacs si lo prefieres.

¿Cómo instalar plugins de tmux con tpm?

tmux Plugin Manager (tpm) te permite instalar plugins desde GitHub. Dos plugins que vale la pena conocer:

  • tmux-resurrect guarda y restaura sesiones de tmux tras reinicios del servidor
  • tmux-continuum guarda sesiones automáticamente a intervalos regulares

Instalar tpm

Clona el repositorio:

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

Añade estas líneas al final 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'

Recarga la configuración:

tmux source-file ~/.tmux.conf

Instala los plugins desde dentro de tmux:

Ctrl-a  I

Es una I mayúscula. tpm descarga e instala los plugins. Verás un mensaje cuando termine.

Verifica que los plugins se instalaron:

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

Usar tmux-resurrect

Guarda el layout de tu sesión actual:

Ctrl-a  Ctrl-s

Restaura después de un reinicio:

Ctrl-a  Ctrl-r

tmux-resurrect guarda los layouts de ventanas, las divisiones de paneles y el directorio actual de cada panel. Con tmux-continuum habilitado, esto ocurre automáticamente cada 15 minutos.

¿Cómo manejar sesiones tmux anidadas por SSH?

Cuando ejecutas tmux localmente y te conectas por SSH a un VPS que también ejecuta tmux, terminas con tmux dentro de tmux. Ambas instancias responden a la misma tecla prefijo. Tus pulsaciones van al tmux exterior (local) en lugar del interior (remoto).

La solución: envía la tecla prefijo al tmux interior pulsando el prefijo dos veces.

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

El primer Ctrl-a lo captura el tmux exterior. El segundo Ctrl-a se reenvía al tmux interior como su prefijo. Luego d desconecta la sesión interior.

Un enfoque más limpio: usa prefijos diferentes. Mantén Ctrl-a en local y deja Ctrl-b como valor por defecto en los servidores remotos. Así no hay conflicto.

Si ya cambiaste el prefijo en ambos lados, añade un toggle a tu ~/.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)"

Pulsa F12 para desactivar el prefijo local y enviar todas las teclas al tmux remoto. Pulsa F12 de nuevo para reactivarlo. La barra de estado atenuada te da un indicador visual de en qué modo estás.

¿Cómo crear layouts tmux con scripts para administración de servidores?

En lugar de dividir paneles manualmente cada vez que te conectas por SSH, programa tu layout con un script. Esto crea un espacio de trabajo repetible con un solo comando.

Crea 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"

Hazlo ejecutable y lánzalo:

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

Obtienes un layout de tres paneles: htop arriba, journalctl -f abajo a la izquierda y un shell vacío abajo a la derecha. Una segunda ventana llamada "work" está disponible para comandos ad-hoc.

El C-m al final de send-keys es un retorno de carro. Pulsa Enter para ejecutar el comando.

Auto-iniciar tmux al arrancar con systemd

Para sesiones de administración de larga duración, crea un servicio 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

Habilita e inicia el servicio para tu usuario:

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

Verifica que está en ejecución:

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)

Ahora una sesión tmux llamada "admin" se inicia automáticamente con el arranque. Conéctate a ella después de SSH:

tmux attach -t admin

Seguridad: permisos del socket de tmux

tmux crea un archivo de socket para comunicarse entre sus procesos servidor y cliente. Por defecto, este socket se encuentra en un directorio bajo /tmp (por ejemplo, /tmp/tmux-1000/).

Revisa tu directorio de socket:

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

El directorio del socket pertenece a tu usuario con permisos que impiden que otros usuarios accedan a el. Esto significa que otros usuarios en el mismo servidor no pueden conectarse a tus sesiones de tmux.

Sin embargo, si ejecutas tmux como root, cualquier proceso ejecutándose como root puede conectarse. Evita ejecutar tmux como root para el trabajo diario. Conéctate por SSH con tu usuario normal y usa sudo para comandos individuales que lo necesiten.

Si necesitas compartir una sesión de tmux (para pair programming o mentoria), usa un socket compartido de forma explicita:

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

El otro usuario se conecta con:

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

Revoca el acceso cuando termines:

chmod 700 /tmp/shared-session

¿Algo salió mal?

tmux: command not found El paquete no se instaló. Ejecuta sudo apt install -y tmux y revisa los errores.

"no server running on /tmp/tmux-1000/default" No existe ninguna sesión de tmux. Inicia una con tmux new-session -s main.

Las teclas no responden / prefijo incorrecto Comprueba qué prefijo esta activo: tmux show-options -g prefix. Si cambiaste el prefijo en .tmux.conf, recarga con tmux source-file ~/.tmux.conf.

El desplazamiento con ratón no funciona Añade set -g mouse on a ~/.tmux.conf y recarga. En versiones de tmux anteriores a 2.1, la opción era set -g mode-mouse on (sintaxis diferente).

Los colores se ven mal dentro de tmux Establece set -g default-terminal "tmux-256color" en ~/.tmux.conf. Si tu emulador de terminal soporta color real (24-bit), añade:

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

La sesión se perdió tras un reinicio Las sesiones de tmux no sobreviven a reinicios por defecto. Usa tmux-resurrect y tmux-continuum (explicados arriba), o crea un servicio systemd para auto-iniciar una sesión.

Vim tarda en salir del modo inserción El valor por defecto de escape-time (500ms) causa esto. Establece set -g escape-time 10 en ~/.tmux.conf.

Revisa los logs de tmux para problemas más profundos:

tmux start-server \; show-messages

O mira los logs del sistema:

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

Referencia rápida de atajos de tmux

Esta tabla usa el prefijo por defecto Ctrl-b. Si cambiaste el prefijo a Ctrl-a (como en la configuración anterior), usa ese en su lugar.

Sesiones

Acción Atajo de teclado Comando
Nueva sesión con nombre tmux new-session -s name
Desconectar Ctrl-b d tmux detach
Listar sesiones Ctrl-b s tmux list-sessions
Conectarse tmux attach -t name
Renombrar sesión Ctrl-b $ tmux rename-session
Eliminar sesión tmux kill-session -t name

Ventanas

Acción Atajo de teclado Comando
Nueva ventana Ctrl-b c
Siguiente ventana Ctrl-b n
Ventana anterior Ctrl-b p
Ventana por número Ctrl-b 0-9
Renombrar ventana Ctrl-b ,
Cerrar ventana Ctrl-b &
Listar ventanas Ctrl-b w

Paneles

Acción Atajo de teclado Comando
División horizontal Ctrl-b "
División vertical Ctrl-b %
Navegar Ctrl-b Arrow
Redimensionar Ctrl-b Ctrl-Arrow
Alternar zoom Ctrl-b z
Cerrar panel Ctrl-b x
Intercambiar panel Ctrl-b { / Ctrl-b }

Modo copia

Acción Atajo de teclado
Entrar en modo copia Ctrl-b [
Pegar buffer Ctrl-b ]
Buscar (emacs) Ctrl-r (atrás) / Ctrl-s (adelante)
Buscar (vi) ? (atrás) / / (adelante)
Salir q

Otros

Acción Atajo de teclado
Línea de comandos Ctrl-b :
Listar todos los atajos Ctrl-b ?
Modo reloj Ctrl-b t

Si pasas tiempo en el terminal, consulta nuestra guía sobre Cómo usar Vim en un VPS Linux.

Cómo usar tmux en un VPS Linux (Debian/Ubuntu)