#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_ed25519

cmux ssh 讀取 ~/.ssh/config 中的主機別名、身分識別檔案和代理設定。所有標誌均反映其 ssh 等效項。

#旗幟

旗幟描述
--name設定工作區標題
-p, --portSSH 連接埠(預設 22)
-i, --identity身分檔案的路徑
-o, --ssh-option傳遞任意 SSH 選項(例如 -o StrictHostKeyChecking=no)
--no-focus建立工作區而不切換到它

當網站或工具想要提供「在 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 清單進行驗證。