# SSH

cmux ssh cria um espaço de trabalho para uma máquina remota. Os painéis do navegador roteiam pela rede remota, os arquivos são arrastados e soltos via scp, os agentes de codificação enviam notificações para a barra lateral local e as sessões são reconectadas quando descartadas.

## 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-main
```

cmux ssh lê seu ~/.ssh/config para aliases de host, arquivos de identidade e configurações de proxy. Todos os sinalizadores espelham seus equivalentes ssh.

## Bandeiras

| Bandeira | Descrição |
| --- | --- |
| `--name` | Defina o título do espaço de trabalho |
| `--command` | Execute o texto do comando uma vez no terminal remoto inicial após iniciar o shell |
| `-p, --port` | Porta SSH (padrão 22) |
| `-i, --identity` | Caminho para o arquivo de identidade |
| `-o, --ssh-option` | Passe opções SSH arbitrárias (por exemplo, -o StrictHostKeyChecking=no) |
| `--transport` | Transporte do terminal interativo: ssh (padrão) ou mosh |
| `--no-focus` | Crie o espaço de trabalho sem mudar para ele |

## Transporte de terminal Mosh

Use cmux ssh user@remote --transport mosh quando o terminal interativo precisar sobreviver a trocas de Wi-Fi, VPN ou hotspot e a suspensão ou reativação. O Mosh transporta apenas o PTY do terminal; o SSH continua gerenciando metadados remotos, configuração e controle do serviço cmux, proxy do navegador, uploads e reconexões.

O cmux requer Mosh 1.4 ou mais recente localmente e verifica o mosh-server remoto antes de iniciar. Se o cliente estiver ausente ou for incompatível, se o servidor estiver ausente ou se a verificação remota falhar, o cmux explica o motivo e continua por SSH.

Crie um workspace Mosh que cria ou conecta uma sessão tmux nomeada (padrão: main). O perfil tmux persiste após reconexão e restauração da sessão do app. É um terminal tmux com roaming, não o espelho nativo de cmux ssh-tmux. --session <name> escolhe a sessão; as demais opções correspondem a cmux mosh. Sem Mosh, o mesmo perfil roda por SSH.

## Links diretos SSH

Use links diretos SSH do cmux quando um site ou ferramenta quiser oferecer um botão Abrir no cmux. O link abre o cmux, mostra um prompt de confirmação e executa o comando cmux ssh equivalente após a confirmação do usuário.

```
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=true
```

Use o URL substituto cmux.com para botões de sites. Ele abre o link nativo e mostra o download caso o cmux não esteja instalado.

```
https://cmux.com/deeplink/ssh?host=workspace123.vm-ssh.freestyle.sh&user=workspace123%2Csession-token&title=Freestyle
```

Os botões de prompt e regras usam o mesmo formato substituto. Vírgulas, dois-pontos e sinais de adição literais são preservados quando são codificados em URL:

```
https://cmux.com/deeplink/prompt?text=Review%20this%20branch
https://cmux.com/deeplink/rules?name=freestyle&text=Prefer%20commas,%20colons:%20and%20small%20PRs
```

Use o ícone SVG para botões do painel ou o logotipo PNG quando uma imagem raster for necessária:

```
https://cmux.com/cmux-icon.svg
https://cmux.com/logo.png
```

Crie o URL substituto com URLSearchParams para que títulos, aliases de host e nomes de usuário sejam codificados com segurança:

```
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 necessário ou alias ~/.ssh/config. |
| `user` | Usuário SSH opcional. cmux combina-o com host como user@host. |
| `port` | Porta SSH opcional, de 1 a 65535. |
| `title` / `name` | Título opcional do espaço de trabalho. Use apenas um título ou nome. |
| `connect-timeout` | Valor opcional de ConnectTimeout em segundos, de 1 a 600. |
| `server-alive-interval` | Valor opcional de ServerAliveInterval em segundos, de 1 a 3600. |
| `server-alive-count-max` | Valor opcional de ServerAliveCountMax, de 1 a 100. |
| `host-key-policy` | Política StrictHostKeyChecking opcional: aceitar novo, perguntar, estrito ou sim. |
| `no-focus` | Booleano opcional. true cria o espaço de trabalho sem mudar para ele. |

Use cmux:// para o aplicativo estável, cmux-nightly:// para Nightly e cmux-dev:// para Debug ou compilações dev marcadas.

Links externos não podem transmitir arquivos de identidade, opções SSH brutas, comandos, ProxyCommand ou regras de encaminhamento. Coloque chaves, ProxyJump, HostName e opções avançadas em ~/.ssh/config. cmux exibe a visualização do comando e exige que o usuário confie no destino SSH antes de se conectar.

## Painéis do navegador

Os painéis do navegador em um espaço de trabalho remoto roteiam todo o tráfego HTTP e WebSocket pela rede da máquina remota. Digite localhost:3000 e você verá o servidor de desenvolvimento em execução na caixa remota. Sem sinalizadores -L, sem encaminhamento manual de porta. Cada espaço de trabalho remoto obtém um armazenamento de cookies isolado para que as sessões tenham escopo por conexão.

## Arraste e solte

Arraste uma imagem ou arquivo para um terminal remoto e o cmux carrega-o via scp por meio da conexão SSH existente. cmux detecta o processo SSH em primeiro plano por TTY e roteia o upload por meio da multiplexação ControlMaster.

## Notificações

Os processos na máquina remota podem executar comandos cmux executados na sua instância local. Quando um agente de codificação chama cmux notify na caixa remota, a notificação aparece na barra lateral local. O anel azul acende na guia da área de trabalho. Cmd+Shift+U salta para ele. O spam de notificação de conexões instáveis ​​é suprimido com um resfriamento por host.

## Agentes de codificação por SSH

cmux claude-teams e cmux omo trabalham dentro de sessões SSH. O daemon de retransmissão Go no host remoto lida com a mesma tradução tmux-compat que a CLI local do Swift faz. Os agentes do Teammate aparecem como divisões nativas do cmux em sua máquina local enquanto a computação é executada na caixa remota.

```
# Inside an SSH session:
cmux claude-teams
cmux omo
```

## Reconectar

Quando a conexão cai, o cmux se reconecta com espera exponencial (3s, 6s, 12s, até 60s). A sessão remota persiste e o cmux é reconectado ao reconectar, redimensionando com a semântica de menor ganho de tela. As opções padrão de keepalive (ServerAliveInterval=20, ServerAliveCountMax=2) são injetadas, a menos que sua configuração já as defina.

## Daemon de retransmissão

Na primeira conexão, o cmux investiga o host remoto (uname -s, uname -m) e carrega um binário cmuxd-remote versionado. O binário fala JSON-RPC sobre stdio e lida com três coisas:

| Recurso | Como |
| --- | --- |
| Proxy de tráfego do navegador | SOCKS5 e HTTP CONNECT através do canal stdio do daemon |
| Retransmissão CLI | Túnel TCP reverso com autenticação HMAC-SHA256 para que processos remotos possam chamar comandos cmux localmente |
| Gerenciamento de sessão | Persiste sessões em reconexões, coordena o redimensionamento de PTY em vários anexos |

O binário daemon é armazenado em ~/.cmux/bin/cmuxd-remote/<version>/<os>-<arch>/cmuxd-remote no host remoto e verificado em um manifesto SHA-256 incorporado no aplicativo.

Canonical: https://cmux.com/pt-BR/docs/ssh

Documentation index: https://cmux.com/llms.txt
