# SSH

cmux ssh 為遠端電腦建立工作區。瀏覽器窗格透過遠端網路路由，透過 scp 拖放文件，編碼代理會將通知傳送到本機側邊欄，會話在拖曳時重新連線。

## 用途

```
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 讀取 ~/.ssh/config 中的主機別名、身分識別檔案和代理設定。所有標誌均反映其 ssh 等效項。

## 旗幟

| 旗幟 | 描述 |
| --- | --- |
| `--name` | 設定工作區標題 |
| `--command` | 在 shell 啟動後於初始遠端終端機中執行一次命令文字 |
| `-p, --port` | SSH 連接埠（預設 22） |
| `-i, --identity` | 身分檔案的路徑 |
| `-o, --ssh-option` | 傳遞任意 SSH 選項（例如 -o StrictHostKeyChecking=no） |
| `--transport` | 互動式終端傳輸方式：ssh（預設）或 mosh |
| `--no-focus` | 建立工作區而不切換到它 |

## Mosh 終端傳輸

如果互動式終端需要在切換 Wi-Fi、VPN、熱點或睡眠與喚醒後保持連線，請使用 cmux ssh user@remote --transport mosh。Mosh 只承載終端 PTY；SSH 仍負責遠端中繼資料、cmux 服務的設定與控制、瀏覽器代理、上傳與重新連線。

cmux 要求本機安裝 Mosh 1.4 或更新版本，並在啟動前檢查遠端 mosh-server。如果用戶端缺少或不相容、伺服器缺少，或遠端檢查失敗，cmux 會說明原因並繼續使用 SSH。

建立 Mosh 工作區，用來建立或附加具名 tmux 工作階段（預設：main）。tmux 設定會在重新連線與 App 工作階段還原後保留。這是可漫遊的 tmux 終端，而不是 cmux ssh-tmux 的原生鏡像。--session <name> 選擇工作階段；其他選項與 cmux mosh 相同。沒有 Mosh 時，同一設定會透過 SSH 執行。

## SSH 深層鏈接

當網站或工具想要提供「在 cmux 中開啟」按鈕時，請使用 cmux SSH 深層連結。該連結將開啟 cmux，顯示確認提示，然後在使用者確認後執行等效的 cmux ssh 命令。

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

使用網站按鈕的 cmux.com 後備 URL。如果未安裝 cmux，它將開啟本機連結並顯示下載。

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

提示和規則按鈕使用相同的後備形狀。逗號、冒號和文字加號在進行 URL 編碼時會保留：

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

使用 SVG 圖示作為儀表板按鈕，或在需要光柵影像時使用 PNG 標誌：

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

使用 URLSearchParams 建立後備 URL，以便安全地編碼標題、主機別名和使用者名稱：

```
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();
```

| 參數 | 意義 |
| --- | --- |
| `host` | 必需的 SSH 主機或 ~/.ssh/config 別名。 |
| `user` | 可選的 SSH 用戶。 cmux 將其與主機組合為 user@host。 |
| `port` | 可選 SSH 端口，1 到 65535。 |
| `title` / `name` | 可選的工作區標題。僅使用標題或名稱之一。 |
| `connect-timeout` | 可選的 ConnectTimeout 值（以秒為單位），範圍為 1 到 600。 |
| `server-alive-interval` | 可選的 ServerAliveInterval 值（以秒為單位），從 1 到 3600。 |
| `server-alive-count-max` | 可選的 ServerAliveCountMax 值，1 到 100。 |
| `host-key-policy` | 可選的 StrictHostKeyChecking 策略：accept-new、ask、strict 或 yes。 |
| `no-focus` | 可選布林值。 true 建立工作區而不切換到它。 |

對穩定應用程式使用 cmux://，對 Nightly 使用 cmux-nightly://，對偵錯或標記的開發版本使用 cmux-dev://。

外部連結無法傳遞身分識別檔案、原始 ssh 選項、命令、ProxyCommand 或轉送規則。將金鑰、ProxyJump、主機名稱和進階選項放在 ~/.ssh/config 中。 cmux 顯示命令預覽並要求使用者在連線之前信任 SSH 目標。

## 瀏覽器窗格

遠端工作區中的瀏覽器窗格透過遠端電腦的網路路由所有 HTTP 和 WebSocket 流量。輸入 localhost:3000，您將看到在遠端機器上執行的開發伺服器。沒有 -L 標誌，沒有手動連接埠轉送。每個遠端工作區都有一個獨立的 cookie 存儲，因此會話的範圍僅限於每個連接。

## 拖放

將影像或檔案拖曳到遠端終端中，cmux 透過現有 SSH 連線透過 scp 上傳。 cmux 透過 TTY 偵測前台 SSH 進程，並透過 ControlMaster 多路復用路由上傳。

## 通知

遠端電腦上的進程可以執行在本機執行個體上執行的 cmux 命令。當編碼代理程式在遠端盒子上呼叫 cmux 通知時，通知會顯示在本機側邊欄中。工作區選項卡上的藍色環亮起。 Cmd+Shift+U 跳到它。透過每台主機的冷卻時間來抑制來自不穩定連線的通知垃圾郵件。

## 透過 SSH 編碼代理

cmux claude-teams 和 cmux omo 都在 SSH 會話中工作。遠端主機上的 Go 中繼守護程式處理與本機 Swift CLI 相同的 tmux-compat 轉換。當計算在遠端機器上運行時，隊友代理會在本機上本機 cmux 分割時產生。

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

## 重新連接

當連線中斷時，cmux 以指數退避（3 秒、6 秒、12 秒，最多 60 秒）重新連線。遠端會話持續存在，並且 cmux 在重新連接時重新連接，並使用最小螢幕獲勝語義調整大小。除非您的設定已設定它們，否則將注入預設的 keepalive 選項（ServerAliveInterval=20、ServerAliveCountMax=2）。

## 中繼守護程式

首次連線時，cmux 會偵測遠端主機（uname -s、uname -m）並上傳版本控制的 cmuxd-remote 二進位。這個二進位檔案透過 stdio 使用 JSON-RPC 並處理三件事：

| 特點 | 如何 |
| --- | --- |
| 瀏覽器流量代理 | 透過守護程式的 stdio 通道進行 SOCKS5 和 HTTP CONNECT |
| CLI中繼 | 使用 HMAC-SHA256 驗證反向 TCP 隧道，以便遠端進程可以在本機上呼叫 cmux 命令 |
| 會話管理 | 在重新連線時保留會話，協調跨多個附件的 PTY 大小調整 |

守護程式二進位檔案儲存在遠端主機上的 ~/.cmux/bin/cmuxd-remote/<version>/<os>-<arch>/cmuxd-remote 中，並根據應用程式中嵌入的 SHA-256 清單進行驗證。

Canonical: https://cmux.com/zh-TW/docs/ssh

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