Выпуск проекта Mosh 1.3, развиваемого в качестве замены SSH
Состоялся выпуск проекта Mosh 1.3, в рамках которого развивается система для огранизации удаленного доступа к терминалу, которая может применяться в качестве замены SSH. Исходные тексты проекта распространяются под лицензией GPLv3.
Из ключевых отличий Mosh можно отметить поддержку роуминга (смена IP-адреса без разрыва сеанса), возможность продолжения работы после обрыва соединения, мгновенное реагирование на нажатие Ctrl+C и выполнения операций локального редактирования командной строки (вместо отправки сведений о каждом нажатии на сервер, операции редактирования строки производятся на стороне клиента). Данные особенности позволяют существенно повысить комфорт работы через мобильные, низкоскоростные или некачественные каналы связи.
Аутенитификация осуществляется с использованием штатных механизмов SSH, обмен данными в рамках установленного шифрованного канала связи осуществляется при помощи собственного протокола, работающего поверх UDP и использующего для шифрования алгоритм AES-128 (после аутентификации, от имени клиента запускается сервер Mosh (не требует прав root), клиенту в ответ передается закрытый ключ и SSH-соединение завершается). Применение UDP и привязка канала связи к ключу шифрования, позволяет оперативно перестраиваться на использование новых IP-адресов, на длительное время прерывать сеанс (например, сеанс не будет разорван после возврата ноутбука из спящего режима) и подстраивать интенсивность обновления содержимого экрана к качеству линка.
Локальное редактирование реализовано благодаря синхронному хранению состояния экрана одновременно как на сервере, так и на стороне клиента. Периодически, при возникновении событий на стороне клиента или сервера (например, выведена новая информация на сервере или нажата клавиша Enter на клиенте), состояния синхронизируются через отправку информации об изменившихся данных. Обновление состояния происходит не в ответ на каждое событие на сервере, а с определенной частотой, которая выбирается в зависимости от пропускной способности канала связи. Если качество линии связи плохое, то данные обновляются реже (изменения накапливаются).
В новом выпуске обеспечено формирование бинарных сборок для macOS, помимо сборок для Linux, Android, Chrome OS, Solaris, iOS, FreeBSD, OpenBSD, NetBSD и Windows. Осуществлен переход на семантическое версионирование (Major.Minor.Patch). Добавлена опция "--no-ssh-pty" для совместимости с SSH-сервером Dropbear. Расширено число платформ, сборки для которых тестируются в системе непрерывной интеграции. Решены проблемы при работе во FreeBSD 11. Добавлена поддержка системы изоляции pledge() для OpenBSD.