#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-maincmux ssh читає ваш ~/.ssh/config для псевдонімів хостів, файлів ідентифікації та налаштувань проксі. Усі прапори відображають свої еквіваленти ssh.
#Прапори
| Прапор | опис |
|---|---|
--name | Встановіть назву робочої області |
--command | Виконати текст команди один раз у початковому віддаленому терміналі після запуску оболонки |
-p, --port | Порт SSH (за замовчуванням 22) |
-i, --identity | Шлях до файлу ідентифікації |
-o, --ssh-option | Передавати довільні параметри SSH (наприклад, -o StrictHostKeyChecking=no) |
--transport | Транспорт інтерактивного термінала: ssh (типово) або mosh |
--no-focus | Створіть робочу область, не переходячи на неї |
#Транспорт термінала Mosh
Використовуйте cmux ssh user@remote --transport mosh, якщо інтерактивний термінал має зберігатися під час перемикання Wi-Fi, VPN чи точки доступу, а також після сну й пробудження. Mosh передає лише PTY термінала; SSH і надалі керує віддаленими метаданими, налаштуванням і контролем служби cmux, проксі браузера, завантаженнями та повторними підключеннями.
cmux потребує локально Mosh 1.4 або новішої версії та перед запуском перевіряє віддалений mosh-server. Якщо клієнт відсутній або несумісний, сервер відсутній чи віддалена перевірка не вдалася, cmux пояснює причину й продовжує через SSH.
Створює Mosh-простір, який створює або приєднує іменований сеанс tmux (типово: main). Профіль tmux зберігається після перепідключення й відновлення сеансу програми. Це роумінговий термінал tmux, а не нативне дзеркало cmux ssh-tmux. --session <name> вибирає сеанс; решта параметрів відповідає cmux mosh. Без Mosh той самий профіль працює через SSH.
#Глибокі посилання SSH
Використовуйте глибокі посилання cmux SSH, коли веб-сайт або інструмент хоче запропонувати кнопку «Відкрити в cmux». Посилання відкриває 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Використовуйте резервну URL-адресу cmux.com для кнопок веб-сайту. Він відкриває рідне посилання та показує завантаження, якщо 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Створіть резервну URL-адресу за допомогою URLSearchParams, щоб заголовки, псевдоніми хостів та імена користувачів були безпечно закодовані:
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 поєднує його з хостом як користувач@хост. |
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:// для стабільної програми, cmux-nightly:// для Nightly та cmux-dev:// для збірок Debug або тегованих розробників.
Зовнішні посилання не можуть передавати файли ідентифікації, необроблені параметри ssh, команди, ProxyCommand або правила пересилання. Натомість помістіть ключі, ProxyJump, HostName та додаткові параметри в ~/.ssh/config. cmux відображає попередній перегляд команди та вимагає від користувача довіряти цілі SSH перед підключенням.
#Панелі браузера
Панелі браузера у віддаленій робочій області направляють весь трафік HTTP і WebSocket через мережу віддаленого комп’ютера. Введіть localhost:3000 і ви побачите сервер розробника, який працює на віддаленому пристрої. Немає прапорців -L, немає ручного перенаправлення портів. Кожна віддалена робоча область отримує ізольоване сховище файлів cookie, тому сеанси розподіляються на кожне з’єднання.
#Перетягніть
Перетягніть зображення або файл на віддалений термінал і cmux завантажить його через scp через наявне з’єднання SSH. cmux виявляє активний процес SSH за TTY і направляє завантаження через мультиплексування ControlMaster.
#Сповіщення
Процеси на віддаленій машині можуть запускати команди cmux, які виконуються на вашому локальному екземплярі. Коли агент кодування викликає cmux notify на віддаленому пристрої, сповіщення з’являється на локальній бічній панелі. На вкладці робочої області засвітиться синє кільце. Cmd+Shift+U переходить до нього. Спам-сповіщення від нестабільних з’єднань пригнічується за допомогою часу відновлення для кожного хоста.
#Агенти кодування через SSH
cmux claude-teams і cmux omo обидва працюють у сеансах SSH. Демон ретрансляції Go на віддаленому хості обробляє той самий tmux-compat переклад, що й локальний Swift CLI. Агенти напарників створюються як рідні cmux-розбиття на вашій локальній машині, а обчислення виконуються на віддаленому пристрої.
# Inside an SSH session:
cmux claude-teams
cmux omo#Повторно підключіться
Коли з’єднання розривається, cmux відновлює з’єднання з експоненційною відстрочкою (3 с, 6 с, 12 с, до 60 с). Віддалений сеанс зберігається, і cmux повторно підключається після повторного підключення, змінюючи розмір із семантикою найменшого екрану. Параметри підтримки активності за замовчуванням (ServerAliveInterval=20, ServerAliveCountMax=2) вводяться, якщо їх уже не встановлено у вашій конфігурації.
#Релейний демон
Під час першого підключення cmux перевіряє віддалений хост (uname -s, uname -m) і завантажує двійковий файл cmuxd-remote з версією. Двійковий файл використовує JSON-RPC через stdio і обробляє три речі:
| Особливість | як |
|---|---|
| Проксування трафіку браузера | SOCKS5 і HTTP CONNECT через канал stdio демона |
| реле CLI | Зворотний TCP-тунель із автентифікацією HMAC-SHA256, щоб віддалені процеси могли викликати команди cmux локально |
| Керування сеансами | Зберігає сеанси під час повторного підключення, змінює розмір PTY координат у кількох вкладеннях |
Двійковий файл демона зберігається в ~/.cmux/bin/cmuxd-remote/<version>/<os>-<arch>/cmuxd-remote на віддаленому хості та перевіряється на маніфест SHA-256, вбудований у програму.