Мош (программное обеспечение)
Оригинальный автор(ы) | Кейт Уинштейн |
---|---|
Первоначальный выпуск | 12 марта 2012 г |
Стабильная версия | 1.4.0 / 26 октября 2022 г [1] |
Репозиторий | |
Операционная система | Unix-подобные системы |
Тип | Утилита |
Лицензия | GNU GPLv3 с OpenSSL и iOS исключениями |
Веб-сайт | мош |
В вычислительной технике Mosh ( мобильная оболочка) — это инструмент, используемый для подключения клиентского компьютера к серверу через Интернет для запуска удаленного терминала . [2] Мош похож [3] на SSH с дополнительными функциями, призванными повысить удобство использования для мобильных пользователей. Основные особенности:
- Mosh поддерживает свой сеанс, даже когда он « роуминг » (когда конечная точка клиента меняет разные IP- адреса), например, при переходе в другую сеть Wi-Fi или при переходе с Wi-Fi на 3G . [4]
- Mosh поддерживает сеанс терминала (а не «соединение» в смысле TCP, поскольку Mosh использует UDP ), даже когда пользователь теряет подключение к Интернету или переводит своего клиента в « спящий режим ». Для сравнения, в таких случаях SSH может потерять соединение из-за тайм-аута TCP . [5]
- Клиент Mosh пытается реагировать на события клавиатуры (ввод, стирание символов с помощью delete ключ и так далее), не дожидаясь задержки сети . Он использует адаптивную систему, которая прогнозирует, решит ли приложение, работающее на сервере, повторять нажатия клавиш или удаления пользователя. [6] [7]
Основными недостатками Mosh являются дополнительные требования к серверу, отсутствие некоторых специальных функций SSH (например, переадресация соединений) и отсутствие собственного клиента Windows . [2] Альтернативой для серверов Linux (которые все еще требуют установки на сервере) является использование GNU Screen поверх обычного SSH-соединения.
Дизайн
[ редактировать ]Mosh работает на другом уровне , чем SSH. В то время как SSH передает поток байтов в каждом направлении (от сервера к клиенту или от клиента к серверу) с помощью TCP , Mosh запускает на сервере эмулятор терминала , чтобы выяснить, что должно быть на экране. [2] Затем сервер передает этот экран клиенту с различной частотой кадров, в зависимости от скорости сети. [8] Это позволяет Mosh экономить сетевой трафик при медленных или прерывистых соединениях.
Поддерживаемые платформы
[ редактировать ]Mosh доступен для большинства дистрибутивов Linux , macOS , FreeBSD , NetBSD и OpenBSD , Android , Solaris , Cygwin , а также в виде приложения Chrome . [2] Программа Termius для iOS включает независимую реализацию протокола Mosh. [9]
Производительность
[ редактировать ]Роуминг
[ редактировать ]Mosh построен на протоколе государственной синхронизации (SSP). [10] который поддерживает однопакетный роуминг. [11] После того, как клиент переключился на новый IP-адрес, одного пакета, успешно дошедшего до сервера, достаточно для «роуминга» соединения. Клиенту не обязательно знать, что он находится в роуминге. (Клиент может находиться в сети с преобразованием сетевых адресов (NAT), когда маршрутизатор NAT перемещается.) [8]
Потеря пакетов
[ редактировать ]В исследовательской работе Моша [8] создатели протестировали SSP на канале с потерей пакетов 29% и обнаружили, что SSP сократил среднее время ответа в 50 раз (с 16,8 секунды до 0,33 секунды) по сравнению с SSH, который использует TCP . Другое исследование, проведенное студентами Стэнфордского университета , показало, что SSP сократил среднее время ответа в 30 раз (с 5,9 секунды до 0,19 секунды). [12]
Локальное эхо
[ редактировать ]По словам разработчиков Mosh, программа способна предсказывать и немедленно отображать 70% нажатий клавиш пользователем. [2] [8] сокращение среднего времени ответа на нажатие клавиши до менее 5 миллисекунд (маскировка задержки в сети). Другое исследование, проведенное студентами Стэнфордского университета, показало, что Мош способен быстро повторять 55% нажатий клавиш пользователя. [13]
Недостатки
[ редактировать ]По сравнению с более популярным SSH , Mosh имеет следующие недостатки:
Предварительные требования на сервере
[ редактировать ]Основным недостатком Mosh является то, что он требует от сервера выполнения дополнительных требований, которые не нужны самому ssh. Из-за своей конструкции Mosh нуждается в сервере, позволяющем осуществлять прямые соединения через UDP. [14] Серверы, не соответствующие этим предварительным требованиям, не могут использоваться Mosh. Примеры таких систем включают серверы за брандмауэрами, которые ограничивают подключения к ssh-порту через TCP. Также проблематичны серверы, до которых можно добраться только косвенно. Последнее обычно поддерживается ssh через опцию «ProxyCommand», но Mosh не поддерживает это. [15]
Один порт на соединение
[ редактировать ]По умолчанию сервер пытается выделить первый свободный порт UDP в диапазоне 60001–61000 для каждого соединения. Такое динамическое распределение портов считается дополнительным бременем и риском для обслуживания брандмауэра. [16] Значительная часть фильтрации брандмауэра происходит посредством отслеживания соединений, так называемой фильтрации с отслеживанием состояния . Она основана на флагах SYN/ACK в сегментах TCP , пакеты UDP не имеют таких флагов. [17]
Смягчение:
- Порт UDP на сервере можно настроить для каждого соединения Mosh, поэтому необходимо открыть только ограниченное количество портов. [18]
- Брандмауэры с глубокой проверкой пакетов и брандмауэры приложений могут лучше справиться с этой задачей, просматривая содержимое пакета и связывая его с начальным соединением.
Падение вывода и отсутствие обратной прокрутки терминала
[ редактировать ]Этот раздел необходимо обновить . Причина такова: сейчас мы находимся на выпуске 1.4, в разделе рассказывается о функциях, которые появятся в 1.3 (не уверен, что они когда-либо появились). ( декабрь 2023 г. ) |
Обратная прокрутка не поддерживается в текущей версии Mosh, а при использовании ее в эмуляторе терминала с полосами прокрутки они исчезают, но планируется в версии 1.3. [19] Эта функция является компромиссом для очистки мусора, поскольку двоичный вывод стирается. [ нужны разъяснения ] . Один из способов смягчить это — использовать Mosh в сочетании с терминальным мультиплексором, таким как screen или tmux . [20]
Отсутствие пересылки ssh-агента
[ редактировать ]Пересылка ssh-агента в настоящее время не поддерживается. [21]
Отсутствие переадресации X11.
[ редактировать ]Переадресация X11 пока не поддерживается. [22]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Выпуск mosh-1.4.0 · mobile-shell/Mosh» . Гитхаб .
- ^ Jump up to: а б с д и «Мош: мобильная оболочка» . Проверено 28 марта 2013 г.
- ^ Брокмайер, Джо. «Into the Mosh Pit: замена мобильной оболочки для SSH». Архивировано 20 марта 2014 г. на Wayback Machine , linux.com , 10 апреля 2012 г. Проверено 28 марта 2013 г.
- ^ Делони, Дэвид. «Mosh: Secure Shell Without the Pain» , Technopedia , 19 октября 2012 г. Проверено 28 марта 2013 г.
- ^ Кокс, Джон. «Исследователи MIT намечают новый подход к протоколам мобильного Интернета». Архивировано 18 октября 2012 г. в Wayback Machine , Network World , 6 июля 2012 г. Проверено 28 марта 2013 г.
- ^ Беккерт, Аксель. «Mosh и AutoSSH: инструменты удаленной оболочки, которые облегчают вашу жизнь в медленной или постоянно меняющейся сети» , Linux Magazine , ноябрь 2012 г.
- ^ Лейден, Джон. «Читающий мысли Мош из MIT противостоит демонам SSH» , The Register , 13 апреля 2012 г. Проверено 28 марта 2013 г.
- ^ Jump up to: а б с д Уинштейн, Кейт. «Mosh: интерактивная удаленная оболочка для мобильных клиентов» , Ежегодная техническая конференция USENIX 2012, Бостон, Массачусетс, 14 июня 2012 г.
- ^ «Функции Termius» , Crystalnix.
- ^ «MIT представляет новый интернет-протокол для мобильных клиентов»
- ^ Уинштейн, Кейт и Балакришнан, Хари. «Mosh: Интерактивная удаленная оболочка для мобильных клиентов (более подробный проект)» . Проверено 28 марта 2013 г.
- ^ Нагарадж, Канти и Макмилин, Эмили. «Мош» , Reproducing Network Research , 14 марта 2013 г. Проверено 28 марта 2013 г.
- ^ Альджунид, Ахмед. «Оценка результатов производительности Mosh 'Mobile Shell'» , Reproducing Network Research , 13 марта 2013 г. Проверено 28 марта 2013 г.
- ^ «'Mosh авторизует пользователя через SSH, а затем установит соединение через порт UDP между 60000 и 61000» . Проверено 19 июня 2014 г.
- ^ «Отчет об ошибке Mosh № 285: невозможно использовать SSH-соединение на основе ProxyCommand» , дата обращения 18 июня 2014 г.
- ^ «Опасности открытия широкого спектра портов? (mosh)» , IT Security (Stack Exchange) , 13 апреля 2012 г. Проверено 28 марта 2013 г.
- ^ Мультиплексирование большего количества сеансов в один и тот же порт UDP.
- ^ «используйте -p для определения удаленного порта UDP»
- ^ https://github.com/keithw/mosh/issues/2 «В версии 1.3 запланирована поддержка обратной прокрутки»
- ^ «Прокрутка назад и альтернативный экран (было: использовать альтернативный экран в smcup/rmcup)»
- ^ "Пересылка агента SSH"
- ^ «Поддержка пересылки X»