#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 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 объединяет его с хостом как 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: принять новый, спросить, строгий или да. |
no-focus | Необязательное логическое значение. true создает рабочую область без переключения на нее. |
Используйте cmux:// для стабильной версии приложения, cmux-nightly:// для Nightly и cmux-dev:// для отладочных или помеченных сборок разработки.
Внешние ссылки не могут передавать идентификационные файлы, необработанные параметры 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, что и локальный интерфейс командной строки Swift. Агенты Teammate появляются как собственные разделения 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, встроенному в приложение.