SSH — общепринятый стандарт для администрирования серверов, но на мобильных устройствах сессия обрывается при каждом переключении с Wi-Fi на мобильную сеть или блокировке экрана. Mosh сохраняет сессию активной при смене сети и мгновенно отображает вводимый текст даже при высокой задержке. Он не заменяет SSH: Mosh использует его для авторизации, а затем передает данные по UDP.
Что такое SSH и что добавляет Mosh
SSH устанавливает с сервером зашифрованное TCP-соединение. Если IP-адрес смартфона меняется, соединение разрывается и приходится подключаться заново. Mosh (mobile shell) сначала подключается по SSH, запускает на сервере mosh-server, после чего обмен данными идет по протоколу UDP. Это дает три ключевых преимущества:
- Роуминг: сессия не прерывается при смене сети или IP-адреса.
- Предиктивное локальное эхо: вводимый текст появляется мгновенно и корректируется, если ответ сервера отличается.
- Переподключение после сна: при разблокировке смартфона сессия продолжается с того же места.
| SSH | Mosh | |
|---|---|---|
| Транспортный протокол | TCP | UDP (вход через SSH) |
| Переключение с Wi-Fi на сотовые данные | Обрывается | Продолжает работать |
| Порты | 22/TCP (или ваш настроенный) | 22/TCP для входа + UDP 60000-61000 |
| Port forwarding и X11 | Да | Нет |
| Перенос текста при изменении размера окна | Да | Нет (mosh-server этого не умеет) |
Источники: mosh.org и man mosh, проверено 18.10.2026.
Когда НЕ стоит использовать Mosh
- Если вам нужны туннели или port forwarding: Mosh их не поддерживает.
- Если брандмауэр или сеть блокирует диапазон UDP 60000-61000. Можно задать один порт через флаг
-p, но он обязательно должен быть открыт. - Если на сервере не установлен
mosh-serverи у вас нет возможности его поставить (sudo apt install moshв Debian/Ubuntu,brew install moshв macOS).
Как использовать Mosh в termi1
В termi1 на iPhone, iPad и Android встроен официальный mosh-client, а не собственная реимплементация. В параметрах подключения по умолчанию используется SSH, а Mosh включается отдельным переключателем. Вы также можете вставить строку MOSH CONNECT …, сгенерированную утилитой mosh-server. Если на сервере Mosh не установлен, приложение не упадет молча, а предупредит вас об этом и продолжит сессию по SSH. Сессии работают внутри tmux, поэтому запущенные вами процессы останутся активными к вашему возвращению.
Если в качестве сервера выступает ваш Mac, существует termi1 Companion — бесплатная утилита для строки меню (macOS 14 или новее). Она загружается с termi1.com в виде подписанного и нотариально заверенного Apple образа DMG (в Mac App Store ее нет). Утилита выполняет три задачи:
- Проверяет, включен ли удаленный вход (Remote Login), а также наличие
mosh-serverи tmux. Если Mosh отсутствует, открывает Terminal с уже подставленной командойbrew install mosh, но не запускает ее самостоятельно. - Выполняет сопряжение с iPhone или iPad по шестизначному коду: мобильное устройство передает открытый ключ, который сохраняется в
~/.ssh/authorized_keysбез ручного копирования и вставки. - При активации функции (по умолчанию выключена) отправляет уведомление на Mac о завершении длительного процесса, запущенного в tmux.
Часто задаваемые вопросы
Заменяет ли Mosh SSH?
Нет. Mosh использует SSH для аутентификации и запуска mosh-server на стороне сервера. Затем сессия переключается на UDP, однако ваши ключи и настройки SSH остаются прежними. Без доступа по SSH использовать Mosh невозможно.
Какие порты нужно открыть для Mosh?
Порт SSH (обычно 22/TCP) для начального входа и диапазон портов UDP 60000–61000 для самой сессии. Если вы не хотите открывать весь диапазон целиком, задайте конкретный порт через параметр -p и откройте в брандмауэре только его.
Подходит ли Mosh для туннелей и port forwarding?
Нет. Mosh не поддерживает проброс портов (port forwarding) и пересылку X11. Если требуется туннель к базе данных или веб-панели управления, используйте стандартное SSH-соединение, а Mosh оставьте для интерактивной работы в терминале.
Что происходит в termi1, если на сервере нет Mosh?
Подключение продолжится по SSH, а termi1 предупредит вас, что утилита mosh-server не найдена. Вы можете установить ее с помощью sudo apt install mosh (Debian/Ubuntu) или brew install mosh (macOS) и снова включить переключатель.