Wendov1.0 · iOS & Android
Українська

Навчання

Mosh чи SSH на телефоні: що вибрати, щоб стежити за агентом

Ви запускаєте Claude Code на довге завдання, закриваєте ноутбук і йдете. Потяг заїжджає в тунель, телефон перемикається з Wi-Fi на мобільну мережу й на хвилину втрачає сигнал, а коли ви знову дивитеся, сесія SSH мертва. Це очікувано: SSH ніколи не проєктували для клієнта, що міняє мережу кожні кілька хвилин, а Mosh і Eternal Terminal існують саме для цього.

Ось що робить кожен із них, що відбувається на телефоні та як вибрати. Якщо хочете цілісну картину того, як запускати агента з кишені, почніть із Як користуватися Claude Code з телефона.

Що стається з SSH на телефоні

SSH працює через з’єднання TCP, а воно прив’язане до однієї IP-адреси й однієї пари сокетів. Коли телефон переходить з Wi-Fi на мобільну мережу, його IP змінюється, а сервер про це не дізнається. З’єднання зависає, доки його не вб’є тайм-аут. Те саме відбувається, коли iOS чи Android присипляє мережу застосунку, щоб заощадити батарею, або вбиває застосунок, бо потрібна пам’ять.

Втрачається більше, ніж екран. Процес, підвішений до тієї сесії SSH, може отримати SIGHUP і померти разом із нею. Тому агент, запущений просто з оболонки SSH, крихкий, і тому парна до цієї статті, tmux для кодингових агентів, майже обов’язкова.

Mosh: UDP і тихе перепідключення

Mosh (mobile shell) використовує SSH лише для старту. Він автентифікується через SSH, запускає mosh-server на вашому комп’ютері й далі говорить по UDP. Без з’єднання TCP, яке можна розірвати, клієнт може змінити IP, втратити сигнал чи заснути, і коли мережа повернеться, сесія буде на місці.

На практиці:

  • Ви перемикаєтеся з Wi-Fi на мобільну мережу, і сесія цього не помічає.
  • Якщо сервер перестає відповідати, застосунок повідомляє про це, а не закриває сесію.
  • Локальне відлуння з прогнозуванням: те, що ви друкуєте, малюється одразу, підкреслене, і підтверджується, коли відповідає сервер. На мобільному зв’язку із затримками різницю відчуєте.

Чим за це платите:

  • UDP 60000–61000 має бути відкритий на вашому комп’ютері (кожна сесія займає один порт із цього діапазону).
  • Немає scrollback. Mosh синхронізує лише те, що на екрані. Якщо хочете прокрутити вгору й прочитати, що вивів агент, працюйте всередині tmux.
  • Якщо ОС вб’є застосунок, сесія Mosh завершується і її не можна відновити.

Eternal Terminal: TCP, але з відновленням

Eternal Terminal (ET) іде іншим шляхом. Він працює через TCP, за замовчуванням на порту 2022, але зберігає власний стан сесії, тож коли з’єднання обривається, він відновлює його й надсилає те, що було пропущено. Потрібен etserver, що працює на вашому комп’ютері, та etterminal у PATH сесії SSH.

На телефоні його перевага в тому, що це єдиний транспорт у Wendo, який переживає закриття застосунку. Сесія з’являється на екрані Головна, а коли ви її відкриваєте, продовжується з того місця, де була. Wendo позначає ET як експериментальний, тож пам’ятайте про це, перш ніж на нього покладатися.

Швидке порівняння

| | SSH | Mosh | ET |
|---|---|---|---|
| Транспорт | TCP | UDP | TCP (2022) |
| Wi-Fi ↔ мобільна мережа | Обривається | Переживає | Переживає |
| Телефон спить | Обривається | Переживає | Переживає |
| Застосунок вбила ОС | Обривається | Втрачено | Відновлюється |
| Scrollback | Так | Ні | Так |
| З Jump Host у Wendo | Так | Ні | Ні |

Встановлення mosh-server

На комп’ютері, де працює агент:

# macOS
brew install mosh

# Debian / Ubuntu
sudo apt install mosh

# Fedora
sudo dnf install mosh

Перевірте, що він є в PATH звичайного підключення SSH, а не лише вашого інтерактивного термінала:

ssh my-server 'which mosh-server'

На Mac з Apple Silicon Homebrew ставить його в /opt/homebrew/bin/mosh-server, а цього шляху не завжди є в PATH неінтерактивної сесії. Якщо так, у Wendo можна вказати шлях до mosh-server у підключенні.

Нотатки про брандмауер

Mosh потрібен вхідний UDP 60000–61000. На Linux з ufw:

sudo ufw allow 60000:61000/udp

З firewalld:

sudo firewall-cmd --permanent --add-port=60000-61000/udp
sudo firewall-cmd --reload

Якщо ваш комп’ютер за роутером, прокиньте цей діапазон UDP так само, як прокидали б порт 22. Для ET відкрийте TCP 2022 так само (sudo ufw allow 2022/tcp).

Якщо ваш SSH іде через проксі чи балансувальник навантаження, UDP Mosh може потрапити на неправильну IP-адресу. У Wendo для цього випадку є параметр «Використовувати IP сервера для UDP».

Вибір у Wendo

Під час редагування підключення поле Транспорт пропонує Авто, SSH, MOSH і ET. З Авто Wendo спершу пробує Mosh, потім ET, а якщо жоден недоступний — переходить на SSH. Починайте з Авто.

Практичне правило:

  • Ви ходите з телефоном, а сесії тривають кілька хвилин: Mosh.
  • Хочете закрити застосунок, повернутися за годину й знайти сесію на екрані Головна: ET.
  • Підключаєтеся через Jump Host: SSH. Ні Mosh, ні ET у Wendo не працюють із Jump Host.
  • Ваш комп’ютер не може відкрити порти UDP: ET або SSH.

Mosh і Eternal Terminal — частина Wendo Pro; без Pro підключення йде через SSH. Поля описано в документації про сесії.

Який би транспорт ви не вибрали, запускайте агента всередині tmux. Транспорт тримає екран живим; tmux тримає живим процес і дає scrollback, якого бракує Mosh. Звичайна комбінація — Mosh або ET для каналу й tmux для роботи, а ось мінімум tmux, який вам потрібен. Щоб отримувати сповіщення, коли агент просить дозволу, див. хуки.