#SSH
cmux ssh crea un espacio de trabajo para una máquina remota. Los paneles del navegador se enrutan a través de la red remota, los archivos se arrastran y sueltan a través de scp, los agentes de codificación envían notificaciones a su barra lateral local y las sesiones se vuelven a conectar al caer.
#Uso
cmux ssh user@remote
cmux ssh user@remote --name "dev server"
cmux ssh user@remote --command 'omp "investigate auth"'
cmux ssh user@remote -p 2222
cmux ssh user@remote -i ~/.ssh/id_ed25519
cmux ssh user@remote --transport mosh
cmux mosh user@remote
cmux mosh-tmux user@remote
cmux mosh-tmux user@remote --session agent-maincmux ssh lee su ~/.ssh/config para alias de host, archivos de identidad y configuraciones de proxy. Todas las banderas reflejan sus equivalentes ssh.
#Banderas
| Bandera | Descripción |
|---|---|
--name | Establecer el título del espacio de trabajo |
--command | Ejecutar el texto del comando una vez en el terminal remoto inicial después de iniciar el shell |
-p, --port | Puerto SSH (predeterminado 22) |
-i, --identity | Ruta al archivo de identidad |
-o, --ssh-option | Pasar opciones SSH arbitrarias (por ejemplo, -o StrictHostKeyChecking=no) |
--transport | Transporte del terminal interactivo: ssh (predeterminado) o mosh |
--no-focus | Cree el espacio de trabajo sin cambiar a él |
#Transporte de terminal Mosh
Usa cmux ssh user@remote --transport mosh cuando el terminal interactivo deba sobrevivir a cambios de Wi-Fi, VPN o punto de acceso, así como a la suspensión y reactivación. Mosh solo transporta el PTY del terminal; SSH sigue gestionando los metadatos remotos, la configuración y el control del servicio cmux, el proxy del navegador, las cargas y las reconexiones.
cmux requiere Mosh 1.4 o posterior en el equipo local y comprueba el mosh-server remoto antes de iniciarse. Si el cliente falta o no es compatible, falta el servidor o falla la comprobación remota, cmux explica el motivo y continúa por SSH.
Crea un espacio Mosh que crea o adjunta una sesión tmux con nombre (predeterminada: main). El perfil tmux persiste al reconectar y restaurar la sesión de la app. Es un terminal tmux itinerante, no el espejo nativo de cmux ssh-tmux. --session <name> elige la sesión; las demás opciones coinciden con cmux mosh. Sin Mosh, el mismo perfil funciona por SSH.
#Enlaces profundos SSH
Utilice enlaces profundos SSH de cmux cuando un sitio web o herramienta quiera ofrecer un botón Abrir en cmux. El enlace abre cmux, muestra un mensaje de confirmación y luego ejecuta el comando cmux ssh equivalente después de que el usuario confirma.
cmux://ssh?host=dev.example.com
cmux://ssh?host=dev.example.com&user=alice&port=2222&title=GPU%20box
cmux://ssh?host=workspace123.vm-ssh.freestyle.sh&user=workspace123%2Csession-token
cmux://ssh?host=dev.example.com&host-key-policy=accept-new&no-focus=trueUtilice la URL alternativa de cmux.com para los botones del sitio web. Abre el enlace nativo y muestra la descarga si cmux no está instalado.
https://cmux.com/deeplink/ssh?host=workspace123.vm-ssh.freestyle.sh&user=workspace123%2Csession-token&title=FreestyleLos botones de aviso y de reglas usan la misma forma alternativa. Las comas, los dos puntos y los signos más literales se conservan cuando están codificados en URL:
https://cmux.com/deeplink/prompt?text=Review%20this%20branch
https://cmux.com/deeplink/rules?name=freestyle&text=Prefer%20commas,%20colons:%20and%20small%20PRsUtilice el ícono SVG para los botones del tablero o el logotipo PNG cuando se requiera una imagen rasterizada:
https://cmux.com/cmux-icon.svg
https://cmux.com/logo.pngCree la URL alternativa con URLSearchParams para que los títulos, los alias de host y los nombres de usuario se codifiquen de forma segura:
const params = new URLSearchParams({
host: "workspace123.vm-ssh.freestyle.sh",
user: "workspace123,session-token",
title: "Freestyle",
});
const href = "https://cmux.com/deeplink/ssh?" + params.toString();| Parámetro | Significado |
|---|---|
host | Host SSH requerido o alias ~/.ssh/config. |
user | Usuario SSH opcional. cmux lo combina con host como usuario@host. |
port | Puerto SSH opcional, 1 a 65535. |
title / name | Título del espacio de trabajo opcional. Utilice sólo uno de título o nombre. |
connect-timeout | Valor opcional de ConnectTimeout en segundos, de 1 a 600. |
server-alive-interval | Valor opcional de ServerAliveInterval en segundos, de 1 a 3600. |
server-alive-count-max | Valor opcional ServerAliveCountMax, de 1 a 100. |
host-key-policy | Política opcional StrictHostKeyChecking: aceptar nuevo, preguntar, estricto o sí. |
no-focus | Booleano opcional. true crea el espacio de trabajo sin cambiar a él. |
Utilice cmux:// para la aplicación estable, cmux-nightly:// para Nightly y cmux-dev:// para depuración o compilaciones de desarrollo etiquetadas.
Los enlaces externos no pueden pasar archivos de identidad, opciones ssh sin formato, comandos, ProxyCommand o reglas de reenvío. En su lugar, coloque las claves, ProxyJump, HostName y opciones avanzadas en ~/.ssh/config. cmux muestra la vista previa del comando y requiere que el usuario confíe en el destino SSH antes de conectarse.
#Paneles del navegador
Los paneles del navegador en un espacio de trabajo remoto enrutan todo el tráfico HTTP y WebSocket a través de la red de la máquina remota. Escriba localhost:3000 y verá el servidor de desarrollo que se ejecuta en la caja remota. Sin indicadores -L, sin reenvío manual de puertos. Cada espacio de trabajo remoto obtiene un almacén de cookies aislado, por lo que las sesiones tienen un alcance por conexión.
#Arrastrar y soltar
Arrastre una imagen o archivo a una terminal remota y cmux lo carga a través de scp a través de la conexión SSH existente. cmux detecta el proceso SSH en primer plano mediante TTY y enruta la carga a través de la multiplexación ControlMaster.
#Notificaciones
Los procesos en la máquina remota pueden ejecutar comandos cmux que se ejecutan en su instancia local. Cuando un agente de codificación llama a cmux notify en el cuadro remoto, la notificación aparece en la barra lateral local. El anillo azul se ilumina en la pestaña del espacio de trabajo. Cmd+Shift+U salta a él. Las notificaciones de spam de conexiones inestables se suprimen con un tiempo de reutilización por host.
#Agentes de codificación sobre SSH
cmux claude-teams y cmux omo funcionan dentro de sesiones SSH. El demonio de retransmisión Go en el host remoto maneja la misma traducción tmux-compat que la CLI Swift local. Los agentes de compañeros de equipo se generan como divisiones cmux nativas en su máquina local mientras el cálculo se ejecuta en la caja remota.
# Inside an SSH session:
cmux claude-teams
cmux omo#Reconectar
Cuando la conexión se cae, cmux se vuelve a conectar con un retroceso exponencial (3 s, 6 s, 12 s, hasta 60 s). La sesión remota persiste y cmux se vuelve a conectar al volver a conectarse, cambiando el tamaño con la semántica de ganancia de pantalla más pequeña. Las opciones de keepalive predeterminadas (ServerAliveInterval=20, ServerAliveCountMax=2) se inyectan a menos que su configuración ya las establezca.
#demonio de retransmisión
En la primera conexión, cmux sondea el host remoto (uname -s, uname -m) y carga un binario cmuxd-remote versionado. El binario habla JSON-RPC sobre stdio y maneja tres cosas:
| Característica | Cómo |
|---|---|
| Proxy de tráfico del navegador | SOCKS5 y HTTP CONNECT a través del canal stdio del demonio |
| Relé CLI | Túnel TCP inverso con autenticación HMAC-SHA256 para que los procesos remotos puedan llamar a los comandos cmux localmente |
| Gestión de sesiones | Persiste las sesiones a través de reconexiones, coordina el cambio de tamaño de PTY en múltiples archivos adjuntos |
El binario del demonio se almacena en ~/.cmux/bin/cmuxd-remote/<version>/<os>-<arch>/cmuxd-remote en el host remoto y se verifica con un manifiesto SHA-256 integrado en la aplicación.