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