Mosh, показывает предупреждение о прерывистом сетевом подключении и локальном эхе. | |
Автор (ы) оригинала | Кейт Винштейн |
---|---|
Первый выпуск | 12 марта 2012 г. ; 9 лет назад ( 2012-03-12) |
Стабильный выпуск | 1.3.2 / 22 июля 2017 г. ; 4 года назад ( 2017-07-22) |
Репозиторий | |
Операционная система | Unix-подобные системы |
Тип | Утилита |
Лицензия | GNU GPLv3 с исключениями OpenSSL и iOS |
Веб-сайт | мош.org |
В вычислении, Мош (мобильная оболочка) представляет собой инструмент, используемый для подключения с клиентского компьютера на сервер через Интернет, чтобы запустить удаленный терминал. Mosh похож на SSH с дополнительными функциями, предназначенными для повышения удобства использования для мобильных пользователей. Основные особенности:
Основными недостатками mosh являются дополнительные требования к серверу, отсутствие некоторых специальных функций SSH (таких как переадресация соединений) и отсутствие собственного клиента Windows.
Mosh работает на другом уровне, чем SSH. В то время как SSH передает поток байтов в каждом направлении (от сервера к клиенту или от клиента к серверу), используя TCP, Mosh запускает эмулятор терминала на сервере, чтобы выяснить, что должно быть на экране. Затем сервер передает этот экран клиенту с различной частотой кадров в зависимости от скорости сети. Это позволяет Mosh экономить сетевой трафик при медленных или прерывистых соединениях.
Mosh доступен для большинства дистрибутивов Linux, macOS, FreeBSD, NetBSD и OpenBSD, Android, Solaris, Cygwin и в виде приложения Chrome. Программа Termius для iOS включает независимую реализацию протокола Mosh.
Mosh построен на протоколе State-Synchronization Protocol (SSP), который поддерживает однопакетный роуминг. После того, как клиент переключился на новый IP-адрес, одного пакета, который успешно достигает сервера, достаточно для «роуминга» соединения. Клиенту не нужно знать, что он переместился. (Клиент может использовать NAT, а вместо этого NAT используется в роуминге.)
В исследовательском документе Mosh создатели протестировали SSP на канале с потерей пакетов на 29% и обнаружили, что SSP сократил среднее время ответа в 50 раз (с 16,8 секунд до 0,33 секунды) по сравнению с SSH, который использует TCP. Другое исследование, проведенное студентами Стэнфордского университета, показало, что SSP сократила среднее время ответа в 30 раз (с 5,9 секунды до 0,19 секунды).
По словам разработчиков Mosh, программа способна предсказывать и немедленно отображать 70% нажатий клавиш пользователем, сокращая среднее время отклика на нажатие клавиши до менее 5 миллисекунд (маскируя задержку в сети). Другое исследование, проведенное студентами Стэнфордского университета, показало, что Мош может быстро повторять 55% нажатий клавиш пользователем.
По сравнению с более популярным SSH, mosh имеет следующие недостатки:
Основным недостатком mosh является то, что он требует от сервера выполнения дополнительных требований, которые не нужны самому ssh. Из-за своей конструкции mosh требуется сервер для прямого подключения через UDP. Серверы, не соответствующие этим требованиям, не могут использоваться mosh. Примеры таких систем включают серверы за брандмауэрами, которые ограничивают подключения к ssh-порту через TCP. Также проблематичны серверы, к которым можно получить доступ только косвенно. Последнее обычно поддерживается ssh с помощью опции «ProxyCommand», но это не поддерживается mosh.
По умолчанию сервер пытается выделить первый свободный порт UDP в диапазоне 60001–61000 для каждого соединения. Такое динамическое распределение портов считается дополнительным бременем и риском для обслуживания межсетевого экрана. Значительная часть фильтрации брандмауэра происходит посредством отслеживания соединений, так называемой фильтрации с отслеживанием состояния, она основана на флагах SYN / ACK в сегментах TCP, пакеты UDP не имеют таких флагов. Смягчение:
Прокрутка назад не поддерживается в текущем выпуске mosh, а при использовании в эмуляторе терминала с полосами прокрутки они исчезают, но планируется для выпуска 1.3. Эта функция является компромиссом для очистки мусора, поскольку двоичный вывод стирается. Один из способов смягчить это в настоящее время - использовать mosh в сочетании с терминальным мультиплексором, таким как screen или tmux.
Перенаправление SSH-агента в настоящее время не поддерживается.
X11 Forwarding пока не поддерживается.