#SSH
cmux ssh crea uno spazio di lavoro per un computer remoto. I riquadri del browser vengono instradati attraverso la rete remota, i file vengono trascinati e rilasciati tramite scp, gli agenti di codifica inviano notifiche alla barra laterale locale e le sessioni si riconnettono in caso di rilascio.
#Utilizzo
cmux ssh user@remote
cmux ssh user@remote --name "dev server"
cmux ssh user@remote -p 2222
cmux ssh user@remote -i ~/.ssh/id_ed25519cmux ssh legge il tuo ~/.ssh/config per alias host, file di identità e impostazioni proxy. Tutti i flag rispecchiano i loro equivalenti ssh.
#Bandiere
| Bandiera | Descrizione |
|---|---|
--name | Imposta il titolo dell'area di lavoro |
-p, --port | Porta SSH (predefinita 22) |
-i, --identity | Percorso del file di identità |
-o, --ssh-option | Passa opzioni SSH arbitrarie (ad esempio -o StrictHostKeyChecking=no) |
--no-focus | Crea l'area di lavoro senza passare ad essa |
#Collegamenti diretti SSH
Utilizza i collegamenti diretti cmux SSH quando un sito Web o uno strumento desidera offrire un pulsante Apri in cmux. Il collegamento apre cmux, mostra una richiesta di conferma, quindi esegue il comando cmux ssh equivalente dopo la conferma dell'utente.
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=trueUtilizzare l'URL di fallback cmux.com per i pulsanti del sito Web. Apre il collegamento nativo e mostra il download se cmux non è installato.
https://cmux.com/deeplink/ssh?host=workspace123.vm-ssh.freestyle.sh&user=workspace123%2Csession-token&title=FreestyleI pulsanti di richiesta e regole utilizzano la stessa forma di fallback. Le virgole, i due punti e i segni più letterali vengono conservati quando sono codificati nell'URL:
https://cmux.com/deeplink/prompt?text=Review%20this%20branch
https://cmux.com/deeplink/rules?name=freestyle&text=Prefer%20commas,%20colons:%20and%20small%20PRsUtilizza l'icona SVG per i pulsanti del dashboard o il logo PNG quando è richiesta un'immagine raster:
https://cmux.com/cmux-icon.svg
https://cmux.com/logo.pngCrea l'URL di fallback con URLSearchParams in modo che titoli, alias host e nomi utente siano codificati in modo sicuro:
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();| Parametro | Significato |
|---|---|
host | Richiesto host SSH o alias ~/.ssh/config. |
user | Utente SSH opzionale. cmux lo combina con host come utente@host. |
port | Porta SSH opzionale, da 1 a 65535. |
title / name | Titolo dell'area di lavoro facoltativo. Utilizzare solo uno tra titolo o nome. |
connect-timeout | Valore ConnectTimeout facoltativo in secondi, da 1 a 600. |
server-alive-interval | Valore ServerAliveInterval facoltativo in secondi, da 1 a 3600. |
server-alive-count-max | Valore ServerAliveCountMax facoltativo, compreso tra 1 e 100. |
host-key-policy | Politica StrictHostKeyChecking facoltativa: accetta-nuovo, chiedi, rigoroso o sì. |
no-focus | Booleano facoltativo. true crea l'area di lavoro senza passare ad essa. |
Utilizza cmux:// per l'app stabile, cmux-nightly:// per Nightly e cmux-dev:// per Debug o build di sviluppo contrassegnate.
I collegamenti esterni non possono passare file di identità, opzioni ssh non elaborate, comandi, ProxyCommand o regole di inoltro. Metti invece le chiavi, ProxyJump, HostName e le opzioni avanzate in ~/.ssh/config. cmux visualizza l'anteprima del comando e richiede all'utente di fidarsi della destinazione SSH prima di connettersi.
#Riquadri del browser
I riquadri del browser in un'area di lavoro remota instradano tutto il traffico HTTP e WebSocket attraverso la rete del computer remoto. Digita localhost:3000 e stai guardando il server di sviluppo in esecuzione sulla scatola remota. Nessun flag -L, nessun port forwarding manuale. Ogni area di lavoro remota ottiene un archivio di cookie isolato, quindi le sessioni hanno un ambito per connessione.
#Trascina e rilascia
Trascina un'immagine o un file in un terminale remoto e cmux lo carica tramite scp tramite la connessione SSH esistente. cmux rileva il processo SSH in primo piano tramite TTY e instrada il caricamento tramite il multiplexing ControlMaster.
#Notifiche
I processi sul computer remoto possono eseguire comandi cmux eseguiti sull'istanza locale. Quando un agente di codifica chiama cmux notify sulla casella remota, la notifica viene visualizzata nella barra laterale locale. L'anello blu si illumina nella scheda dell'area di lavoro. Cmd+Shift+U salta ad esso. Lo spam di notifiche proveniente da connessioni instabili viene soppresso con un tempo di recupero per host.
#Agenti di codifica su SSH
cmux claude-teams e cmux omo funzionano entrambi all'interno delle sessioni SSH. Il demone di inoltro Go sull'host remoto gestisce la stessa traduzione tmux-compat eseguita dalla CLI Swift locale. Gli agenti dei compagni di squadra vengono generati come suddivisioni cmux native sul computer locale mentre il calcolo viene eseguito sul dispositivo remoto.
# Inside an SSH session:
cmux claude-teams
cmux omo#Riconnettiti
Quando la connessione si interrompe, cmux si riconnette con backoff esponenziale (3s, 6s, 12s, fino a 60s). La sessione remota persiste e cmux si ricollega alla riconnessione, ridimensionandosi con la semantica dello schermo più piccolo. Le opzioni keepalive predefinite (ServerAliveInterval=20, ServerAliveCountMax=2) vengono inserite a meno che la configurazione non le abbia già impostate.
#Demone di inoltro
Alla prima connessione, cmux analizza l'host remoto (uname -s, uname -m) e carica un file binario cmuxd-remote con versione. Il binario parla JSON-RPC su stdio e gestisce tre cose:
| Caratteristica | Come |
|---|---|
| Proxy del traffico del browser | SOCKS5 e HTTP CONNECT sul canale stdio del demone |
| Relè CLI | Tunnel TCP inverso con autenticazione HMAC-SHA256 in modo che i processi remoti possano chiamare i comandi cmux localmente |
| Gestione della sessione | Mantiene le sessioni tra le riconnessioni, coordina il ridimensionamento PTY tra più allegati |
Il binario del daemon è archiviato in ~/.cmux/bin/cmuxd-remote/<version>/<os>-<arch>/cmuxd-remote sull'host remoto e verificato rispetto a un manifest SHA-256 incorporato nell'app.