Mosh

Бесплатно
Открытый исходный код
macOS
Linux
Android
iOS

Сайт: mosh.org

Mosh — сетевой терминальный инструмент для удалённого взаимодействия с командной строкой, разработанный как альтернатива интерактивному SSH. Проект возник с целью повышения устойчивости удалённых сессий при ненадёжных сетевых условиях: при смене сетей, потере кратковременного соединения или высокой задержке. Mosh использует клиент‑серверную архитектуру, где на сервере запускается процесс, поддерживающий состояние терминала, а клиент связывается с ним по протоколу, отличному от традиционного TCP‑соединения SSH.

Ключевой технической особенностью Mosh является использование протокола поверх UDP для передачи изменений состояния терминала и предиктивного локального ввода, что позволяет отображать ввод пользователя мгновенно, даже если ответы от сервера приходят с заметной задержкой. При этом Mosh сохраняет семантику терминала и синхронизирует отображение экрана, обеспечивая корректную работу программ, использующих терминал. Проект развивается как свободное программное обеспечение и нашёл применение у пользователей, работающих через ненадёжные или мобильные сети.

  • Устойчивость сессий: сохраняет сеанс при смене IP‑адреса и кратковременных разрывах связи, позволяя клиенту автоматически переподключаться к серверному процессу.
  • Протокол на базе UDP: передаёт только изменения состояния экрана и управляющие данные, снижая задержки, связанные с установлением и восстановлением TCP‑соединений.
  • Предиктивный локальный ввод: клиент прогнозирует отрисовку ввода пользователя на основе локальных событий, обеспечивая немедленный отклик интерфейса до подтверждения от сервера.
  • Синхронизация состояния терминала: сервер поддерживает модель экрана и курсора, посылая дельты клиенту для согласованного отображения, что важно для корректной работы полноэкранных текстовых приложений.
  • Защита и аутентификация: изначально проект предполагал использование SSH для аутентификации и установки начального защищённого канала, после чего управление сессией переходит на UDP‑сообщения между клиентом и сервером.
  • Кроссплатформенность: доступен для различных Unix‑подобных систем и клиентских платформ, что делает его удобным для использования на серверах и мобильных устройствах с командной строкой.
  • Оптимизация трафика: пересылает компактные обновления экрана вместо полного потока байтов ввода/вывода, что снижает объём передаваемых данных при медленных соединениях.
Подробнее