#SSH
cmux ssh 為遠端電腦建立工作區。瀏覽器窗格透過遠端網路路由,透過 scp 拖放文件,編碼代理會將通知傳送到本機側邊欄,會話在拖曳時重新連線。
#用途
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 讀取 ~/.ssh/config 中的主機別名、身分識別檔案和代理設定。所有標誌均反映其 ssh 等效項。
#旗幟
| 旗幟 | 描述 |
|---|---|
--name | 設定工作區標題 |
-p, --port | SSH 連接埠(預設 22) |
-i, --identity | 身分檔案的路徑 |
-o, --ssh-option | 傳遞任意 SSH 選項(例如 -o StrictHostKeyChecking=no) |
--no-focus | 建立工作區而不切換到它 |
#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 清單進行驗證。