MXterm Pro

Cómo gestionar servidores SSH en Mac cuando tienes más de 50

Henry AGI
6 min de lectura
Four steps for many servers: group hosts in Host Manager, import your SSH config, broadcast to a group of panes, read live server stats

Para gestionar servidores SSH en Mac, sean 50 o más, incluidas VMs en la nube, agrupa tus hosts, guarda las contraseñas en el llavero del sistema y consulta CPU, RAM y disco en vivo sin instalar un agente en cada máquina. El SSH Host Manager de MXterm Pro lo hace sobre conexiones reales de OpenSSH. Free guarda 5 hosts por defecto; Pro quita el límite.

Para quién es esta guía

Esta guía es para quien gestiona infraestructura backend en AWS, Google Cloud, DigitalOcean, Hetzner o bare metal. Normalmente son más hosts de los que caben en la cabeza, repartidos entre producción, staging y un puñado de máquinas de desarrollo de un solo uso.

Si gestionas uno o dos servidores, una pestaña de Terminal.app y tu ~/.ssh/config siguen siendo la herramienta más simple. Las funciones de organización de abajo (agrupar, filtrar, broadcast y telemetría) empiezan a valer la pena cuando manejas una docena de hosts o más y ya no recuerdas qué pestaña es cuál.

Guía relacionadaCómo evitar que SSH se desconecte por tiempo de espera en tu MacBook

Cómo agrupar y filtrar decenas de hosts

Pulsa ⌘⇧H para abrir el SSH Host Manager. Cada host que agregas lleva nombre, dirección, puerto, usuario y uno de tres tipos de autenticación: contraseña, archivo de clave privada o keyboard-interactive. La mayoría de los atajos, este incluido, se pueden reasignar en Configuración → Atajos. Zoom, ⌘, ⌘1 a ⌘9 y algunos más son fijos.

Cada host pertenece a un grupo. Hay seis de fábrica (Production, Staging, Testing, Cloud / VPS, Internal / VPN, Development) y puedes agregar los tuyos. Una fila de chips de filtro sobre la lista muestra en tiempo real el número de hosts de cada grupo.

Haz clic en "Production (14)" y una lista de 50 hosts se reduce a los que pueden hacerte daño si escribes algo mal. Es un conjunto plano de filtros por grupo, no un árbol de carpetas anidadas. Tampoco hay un cuadro de búsqueda de texto libre aparte de esos filtros, así que no esperes nada más profundo.

Si guardas servidores en ~/.ssh/config, el botón Importar lee las líneas Host, HostName, User, Port y IdentityFile y las agrupa en "Imported" de una sola vez. El mismo botón lee un archivo de sesiones de MobaXterm (solo sesiones SSH, agrupadas en "MobaXterm") y una exportación de perfiles de iTerm2 (perfiles cuyo comando es una línea ssh simple, agrupados en "iTerm2"). En una Mac, la pestaña Importar / Exportar del Administrador de sesiones también puede buscar perfiles de iTerm2.

Ese nombre de grupo ("MobaXterm" o "iTerm2" en esas importaciones) aparece como insignia en cada host, pero la fila de filtros solo lista los seis grupos por defecto y los que agregues tú, así que crea un grupo con el mismo nombre para filtrar por él. En Pro, una configuración de 50 hosts es una sola importación en vez de cincuenta formularios. En Free la importación se detiene en el límite de 5 hosts.

El importador no interpreta ProxyJump ni otras directivas avanzadas. Más sobre eso abajo.

Dónde viven realmente tus contraseñas y claves

Las contraseñas SSH van al almacén de credenciales de tu sistema operativo (el Keychain de macOS en una Mac) con el nombre de servicio com.mxterm.desktop.ssh, indexadas por el id del host. La frase de contraseña de una clave no se guarda: la app la elimina antes de escribir la lista de hosts y nunca llega al almacén de credenciales del sistema. MXterm Pro ya está integrado con el Administrador de credenciales de Windows, pero SSH en Windows aún no está verificado.

No se escribe ningún secreto en el archivo de configuración local de MXterm Pro. Un host guardado antiguo que aún tenía una contraseña en texto plano se reescribe sin ella en la siguiente carga.

La ruta de un archivo de clave como ~/.ssh/id_ed25519 no es un secreto, solo una ruta, así que ese campo se queda en la lista de hosts en texto plano. Coincide con lo que verías en un ~/.ssh/config.

Por qué reconectar al mismo servidor se siente instantáneo

En macOS, cada conexión SSH que abre MXterm Pro lleva tres opciones: ControlMaster=auto, ControlPath=~/.mxterm/sockets/%r@%h:%p y ControlPersist=10m. Es multiplexación de conexiones real de OpenSSH, nada a medida.

La primera conexión a un host abre un socket maestro. Las siguientes al mismo host, como una segunda pestaña de terminal o el panel SFTP, lo reutilizan, y el maestro sigue vivo 10 minutos después de cerrarse la última. Así se evita un nuevo handshake TCP y la ida y vuelta de la autenticación. Cambiar los ajustes de conexión de un host guardado o eliminarlo cierra su conexión compartida, y el panel de archivos muestra un botón Restablecer conexión cuando el servidor rechaza un inicio de sesión o pide una contraseña nueva.

Esto también resuelve un problema de los hosts con contraseña. BatchMode=yes implica que SFTP no puede pedir una contraseña por sí solo, así que sin un socket maestro compartido un host con contraseña conectaría en una pestaña de terminal y fallaría en el explorador de archivos. Al compartir el ControlPath, el panel SFTP se apoya en una sesión que ya autenticaste en un panel de terminal.

Ejecutar el mismo comando en varios servidores a la vez (Broadcast Mode)

⌘⇧B activa Broadcast Mode con todos los paneles de la pestaña actual ya dentro del grupo. Con Option/Alt+clic en un panel lo sacas o lo vuelves a meter. Clear vacía el grupo y Select all lo rellena. Un banner permanente ("Broadcast ON · N panes" en la app) se queda en pantalla. Lo que escribas en cualquier panel del grupo llega a todos, en el orden de la disposición.

Revisa dos cosas antes de confiar en él para 50 servidores. El grupo empieza con todos los paneles de la pestaña actual, así que acótalo antes de escribir, y solo llega a los paneles de esa pestaña, no a todas las conexiones abiertas. Además, no hay confirmación por pulsación una vez activado, porque la idea es escribir una vez y que llegue a todos.

La red de seguridad es el banner, difícil de pasar por alto. Clear quita todo el grupo y Esc sale al instante. Arma tu grupo con el mismo cuidado que tendrías antes de ejecutar pssh o paneles sincronizados de tmux contra una flota de producción, porque la herramienta no te impide enviar a los seis servidores equivocados.

Telemetría del servidor en vivo sin un agente de monitoreo

El Server Telemetry HUD está al pie de una pestaña SSH y muestra CPU %, RAM %, disco % y uptime, con colores verde, ámbar o rojo al pasar de 65% y 85%. Se actualiza solo cada 20 segundos, y un botón de actualización manual te da un valor al instante.

Cada actualización ejecuta un one-liner de vida corta python3 -c "..." sobre tu conexión SSH existente. Lee la carga de CPU con os.getloadavg() frente al número de núcleos, la memoria de /proc/meminfo, el disco con shutil.disk_usage('/') y el uptime de /proc/uptime, y termina. No se instala nada y nada queda residente en el servidor.

El único requisito es que python3 exista en el host remoto. Muchas imágenes de servidor lo incluyen, pero las mínimas, como Alpine, a menudo no. Sin él la barra de estadísticas queda vacía: la llamada a uptime que también intenta no devuelve campos utilizables, y MXterm Pro prefiere no mostrar números antes que mostrar números inventados. La RAM se lee de /proc/meminfo, así que un servidor macOS o BSD muestra un guion en la RAM en lugar de un porcentaje.

¿Y los jump hosts y bastiones?

Un host guardado tiene un campo Host de salto / Bastión (puedes encadenar varios, separados por comas) y una opción Reenviar agente SSH. La conexión se arma como argv real de ssh con -J y -A según corresponda.

El importador de ~/.ssh/config no rellena ese campo. Solo toma HostName, User, Port e IdentityFile, y una línea ProxyJump se omite en vez de traducirse. Un perfil de iTerm2 cuyo comando es ssh -J bastion host sí trae su host de salto. En los hosts importados de ~/.ssh/config o de MobaXterm, configura tú el host de salto una vez, en el formulario del propio host.

Otra opción: un panel de terminal es un PTY real. Si tu ~/.ssh/config tiene una entrada Host prod-db con una línea ProxyJump bastion, escribir ssh prod-db en un panel de shell normal respeta esa configuración igual que Terminal.app.

Así no obtienes la etiqueta de grupo de ese host ni su barra de estadísticas del servidor.

Broadcast llega a los paneles de una sola pestaña. Una pestaña abierta desde el SSH Host Manager está ligada a un solo host, así que para escribir en varios servidores a la vez, abre paneles de shell normales en una pestaña, ejecuta ssh <alias> en cada uno y haz broadcast a esos. Free no tiene límite de paneles.

Free frente a Pro: qué implican realmente 50 servidores

Este es el dato que más importa en este caso: el plan Free te limita a 5 hosts SSH guardados. Agrupar, importar, multiplexación, broadcast y telemetría funcionan igual en Free y en Pro. Lo único que no puedes es guardar 50 hosts sin los hosts ilimitados de Pro.

La misma línea entre Free y Pro atraviesa el resto de la app. Free no tiene límite de paneles. Limita cada Control Room (antes War Room) a 2 miembros (Pro no tiene tope de miembros) y guarda 1 MXterm Host.

Nada de esto hace falta para gestionar 50 servidores. Solo entra en juego si además ejecutas Claude Code, Codex o Gemini CLI contra esos servidores junto a tus sesiones SSH.

Cómo se compara con iTerm2, Warp, Termius y MobaXterm en una flota de servidores

iTerm2 es un emulador de terminal maduro, gratuito y solo para macOS, con excelente integración de tmux y gestión de perfiles. Los perfiles y su gestor de contraseñas respaldado por Keychain cubren mucho, pero no incluye un gestor de hosts SSH dedicado con filtros de grupo ni un HUD de telemetría. Tendrías que armarlo tú con tmux, dotfiles y herramientas de monitoreo aparte.

Warp es una terminal moderna con IA integrada en la misma ventana que tu shell. Es una buena opción si quieres ayuda de IA para escribir comandos y ejecutar agentes. No está pensada en torno a decenas de hosts SSH guardados con grupos y estadísticas del servidor. MXterm Pro está pensado para varios agentes en paneles divididos.

Termius es el competidor más cercano aquí. La sincronización de hosts SSH entre dispositivos, una app para celular y un organizador de hosts maduro son puntos fuertes reales, y si necesitas tu lista de hosts en el celular, encaja mejor. No ejecuta varios agentes de código con IA en paralelo ni crea un git worktree por agente.

MobaXterm sigue siendo la herramienta más completa para quienes usan Windows y necesitan X11 forwarding y túneles junto a SSH, pero no tiene versión para macOS ni orquestación de agentes de IA.

La Multi-Agent Control Room de MXterm Pro ejecuta varios agentes (Claude Code, Codex, Gemini CLI y otros) en paneles divididos. Con el aislamiento por worktree activado, cada panel de agente recibe su propio git worktree en <repo>/.worktrees/<slug>, lo que reduce la probabilidad de que el error de un agente toque la copia de trabajo de otro.

⌘J Command Recipes compara lo que escribes con un conjunto integrado de comandos de Linux ya hechos. Es coincidencia por palabras clave, no un modelo escribiendo bash.

Primeros pasos

Descarga MXterm Pro y prueba el SSH Host Manager con los hosts que tengas hoy. Agrupar, importar, multiplexación, broadcast y el HUD de telemetría están disponibles en el plan Free.

El único límite que encontrarás con una flota real de 50 servidores es el tope de 5 hosts guardados. Para pasarlo necesitas los hosts ilimitados de Pro.

Pruébalo tú mismo

SSH con varios paneles, Command Recipes (Cmd+J) y una Control Room (antes War Room) multiagente: gratis para empezar.

Descargar MXterm Pro

¿Ya tienes MXterm Pro? Lee la guía de configuración →

¿Nuevo en MXterm Pro? Mira los precios →

Preguntas frecuentes

¿Cómo protege MXterm Pro las credenciales SSH guardadas?

Las contraseñas SSH guardadas van al almacén de credenciales del sistema (Keychain de macOS en una Mac) con el nombre de servicio com.mxterm.desktop.ssh, no al archivo de configuración de la app. La frase de contraseña de una clave no se guarda. La ruta de un archivo de clave (~/.ssh/id_ed25519) no es un secreto, así que se queda en la lista de hosts. El panel de archivos, las transferencias y la barra de estadísticas usan BatchMode=yes y no pueden pedir una contraseña, a diferencia del panel de terminal.

¿Puedo enviar un comando a varios servidores a la vez y es seguro?

Sí. ⌘⇧B lo activa con todos los paneles de la pestaña actual en el grupo. Option/Alt+clic activa o desactiva un panel, Clear vacía el grupo y Select all lo rellena. Un banner permanente ("Broadcast ON · N panes" en la app) sigue visible y Esc sale al instante. No hay confirmación por pulsación, así que acota el grupo antes. La seguridad es un banner difícil de pasar por alto y fácil de quitar, no un mensaje de confirmación.

¿El plan Free permite guardar 50 servidores?

No. El plan Free limita los hosts SSH guardados a 5, y Pro quita ese límite. Agrupar, filtrar, importar, multiplexación, broadcast y el HUD de telemetría funcionan igual en ambos planes. El número de hosts es el límite con el que tropezará una flota de 50 servidores.

¿El Telemetry HUD requiere instalar algo en el servidor?

No hay ningún agente persistente. Cada actualización ejecuta un one-liner de python3 de vida corta sobre tu conexión SSH existente para leer la carga de CPU, /proc/meminfo, el uso de disco y /proc/uptime, y termina. El único requisito es python3 en el host remoto; sin él la barra de estadísticas queda vacía.

¿Puedo usar jump hosts o servidores bastión?

Sí. Desde 1.0.21 cada host guardado tiene un campo Host de salto / Bastión (encadena varios con comas) y una opción Reenviar agente SSH. Importar ~/.ssh/config sigue omitiendo las líneas ProxyJump, así que configura tú el host de salto en los hosts importados. Escribir tu alias de ssh actual en un panel de shell normal también funciona como en Terminal.app, pero sin el grupo ni las estadísticas del servidor que obtienes al conectar desde el SSH Host Manager.

¿Se importa todo si importo mi ~/.ssh/config?

El importador lee las líneas Host, HostName, User, Port e IdentityFile y crea un host guardado por cada entrada Host que tenga HostName. Los bloques comodín Host * y las entradas sin HostName se omiten, y solo se conserva el primer IdentityFile. No interpreta ProxyJump, bloques Match ni otras directivas avanzadas. Esas directivas se siguen aplicando si escribes el alias directamente en un panel de shell.

Pregunta a una IA sobre MXterm Pro

Abre una respuesta en vivo en ChatGPT, Claude o Perplexity, basada en esta página. La escribe el asistente, no nosotros, así que revisa las fuentes que cita.

Pregunta enviada¿Cómo puedo administrar 50 o más servidores SSH y VMs en la nube desde una Mac con MXterm Pro?