Cómo usar tmux en un VPS Linux
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:
- Proteccion ante desconexiones SSH. Tus procesos siguen ejecutándose cuando la conexión se cae. Reconéctate y vuelve a la sesión.
- 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.
- 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]).
Navegación en modo copia
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:
- Prefijo
Ctrl-apone la tecla bajo tu menique izquierdo.Ctrl-brequiere un estiramiento. Es el rebind más común. base-index 1hace que las ventanas empiecen en 1 en lugar de 0. PulsarCtrl-a 1para la primera ventana resulta natural.history-limit 50000almacena 50.000 líneas de desplazamiento por panel. Las 2.000 por defecto son demasiado pocas para seguir logs.escape-time 10reduce el tiempo que tmux espera tras recibir la tecla Escape. El valor por defecto (500ms) hace que Vim se sienta lento dentro de tmux.-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.mode-keys vicambia el modo copia a navegación estilo vi. Cámbialo aemacssi 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.
¿Listo para probarlo?
Obtén un VPS Linux listo en segundos. →