Mosh (программное обеспечение) - Mosh (software)

Mosh
Снимок экрана Mosh (программное обеспечение), показывающий предупреждение о прерывистом сетевом подключении и функцию локального эхо
Mosh, показывает предупреждение о прерывистом сетевом подключении и функции локального эха.
Оригинальный автор (ы)Кейт Винштейн
изначальный выпуск12 марта 2012 г.; 8 лет назад (2012-03-12)
Стабильный выпуск
1.3.2 / 22 июля 2017 г.; 3 года назад (2017-07-22)[1]
Репозиторий Отредактируйте это в Викиданных
Операционная системаUnix-подобный системы
ТипУтилита
ЛицензияGNU GPLv3 с OpenSSL и iOS исключения
Интернет сайтмош.org Отредактируйте это в Викиданных

В вычисление, Mosh (мобильная оболочка) - это инструмент, используемый для подключения клиентского компьютера к серверу через Интернет для запуска удаленного Терминал.[2] Мош похож[3] к SSH, с дополнительными функциями, призванными повысить удобство использования для мобильный пользователей. Основные особенности:

  • Мош продолжает сеанс, даже когда "бродит "(когда клиентская конечная точка меняется на другую IP адреса), например, перейдя на другой Вай фай сети или при переходе с Wi-Fi на 3G.[4]
  • Mosh поддерживает терминальный сеанс (не «соединение» в смысле TCP, потому что Mosh использует UDP), даже когда пользователь теряет подключение к Интернету или помещает своего клиента в «спать. "Для сравнения, SSH может потерять соединение в таких случаях, потому что TCP время вышло.[5]
  • Клиент Mosh пытается реагировать на события клавиатуры (ввод, стирание символов с помощью клавиши [Delete] и т. Д.), Не дожидаясь подключения к сети. отставание. Он использует адаптивную систему, которая предсказывает, решит ли приложение, работающее на сервере, эхо нажатия клавиш или удаления пользователя.[6][7]

Главный недостатки mosh являются дополнительными предпосылками к серверу, так как в нем отсутствуют некоторые специальные функции SSH (например, переадресация соединения) и отсутствие родные Windows клиент.[2]

Дизайн

Мош работает в другом слой из SSH. В то время как SSH передает поток байтов в каждом направлении (от сервера к клиенту или от клиента к серверу), используя TCP, Мош управляет эмулятор терминала на сервере, чтобы выяснить, что должно быть на экране.[2] Затем сервер передает этот экран клиенту с различной частотой кадров в зависимости от скорости сети.[8] Это позволяет Mosh экономить сетевой трафик при медленных или прерывистых соединениях.

Поддерживаемые платформы

Мош доступен для большинства Дистрибутивы Linux, macOS, FreeBSD, NetBSD, и OpenBSD, Android, Солярис, 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 является то, что он требует от сервера выполнения дополнительных требований, которые не нужны самому ssh. Из-за своей конструкции mosh требуется сервер, чтобы разрешать прямые соединения через UDP.[14] Серверы, не отвечающие этим требованиям, не могут использоваться mosh. Примеры таких систем включают серверы за брандмауэрами, которые ограничивают подключения к ssh-порту через TCP. Также проблематичны серверы, доступ к которым возможен только косвенно. Последнее обычно поддерживается ssh с помощью опции «ProxyCommand», но это не поддерживается mosh.[15]

Один порт на соединение

По умолчанию сервер пытается выделить первую свободную UDP порт в диапазоне 60001–61000 на одно соединение. Такое динамическое распределение портов считается дополнительной нагрузкой и риском для обслуживания межсетевого экрана.[16] Значительная часть фильтрации межсетевого экрана происходит через отслеживание соединений, так называемое фильтрация с отслеживанием состояния, это основано на флагах SYN / ACK в TCP сегментов, пакеты UDP не имеют таких флагов.[17]
Смягчение:

  1. Порт UDP на сервере может быть установлен для каждого mosh-соединения, поэтому нужно открывать только ограниченное количество портов. [18]
  2. Межсетевые экраны для глубокой проверки пакетов и Брандмауэры приложений может справиться с этим лучше, просмотрев содержимое пакета и связав его с начальным соединением.

Падение вывода и отсутствие обратной прокрутки терминала

Прокрутка не поддерживается в текущем выпуске mosh, а при использовании в эмуляторе терминала с полосами прокрутки они исчезают, но планируется для выпуска 1.3.[19] Эта функциональность является компромиссом для очистки мусора, поскольку двоичный вывод стирается[требуется разъяснение ]. Один из способов смягчить это в настоящее время - использовать mosh в сочетании с терминальным мультиплексором, например экран или же tmux.[20]

Отсутствие пересылка ssh-агента

Перенаправление SSH-агента в настоящее время не поддерживается.[21]

Отсутствие X11 пересылка

X11 Forwarding пока не поддерживается.[22]

Смотрите также

Рекомендации

  1. ^ Уинштейн, Кейт (22 июля 2017 г.). "выпущен mosh 1.3.2". мош-пользователи (Список рассылки). Получено 31 июля 2017.
  2. ^ а б c d е «Мош: мобильная оболочка». Проверено 28 марта 2013 г.
  3. ^ Брокмайер, Джо. "Into the Mosh Pit: мобильная оболочка для SSH" В архиве 2014-03-20 на Wayback Machine, linux.com, 10 апреля 2012 г. Проверено 28 марта 2013 г.
  4. ^ Делони, Дэвид. "Mosh: Безопасная оболочка без боли", Технопедия, 19 октября 2012 г. Проверено 28 марта 2013 г.
  5. ^ Кокс, Джон. «Исследователи Массачусетского технологического института изучают новый подход к протоколам мобильного Интернета» В архиве 2012-10-18 на Wayback Machine, Сетевой мир, 6 июля 2012 г. Проверено 28 марта 2013 г.
  6. ^ Бекерт, Аксель. «Mosh и AutoSSH: инструменты удаленной оболочки, которые облегчают вашу жизнь в медленной или постоянно изменяющейся сети», Журнал Linux, Ноябрь 2012 г.
  7. ^ Лейден, Джон. «Читающий мысли Мош из Массачусетского технологического института противопоставляет себя демонам SSH», Реестр, 13 апреля 2012 г. Проверено 28 марта 2013 г.
  8. ^ а б c d Винштейн, Кит. «Mosh: интерактивная удаленная оболочка для мобильных клиентов», Ежегодная техническая конференция USENIX 2012, Бостон, Массачусетс, 14 июня 2012 г.
  9. ^ "Termius Features", Crystalnix.
  10. ^ «MIT представляет новый интернет-протокол для мобильных клиентов»
  11. ^ Винштейн, Кейт и Балакришнан, Хари. «Mosh: интерактивная удаленная оболочка для мобильных клиентов (более подробный черновик)». Проверено 28 марта 2013 г.
  12. ^ Нагарадж, Канти и Макмилин, Эмили. "Мош", Воспроизведение сетевых исследований, 14 марта 2013 г. Проверено 28 марта 2013 г.
  13. ^ Альджуниед, Ахмед. «Оценка результатов деятельности Mosh 'Mobile Shell'», Воспроизведение сетевых исследований, 13 марта 2013. Проверено 28 марта 2013 г.
  14. ^ «'Mosh войдет в систему через SSH, а затем установит соединение через порт UDP между 60000 и 61000.'», Проверено 19 июня 2014.
  15. ^ "Отчет об ошибке Mosh № 285: невозможно использовать SSH-соединение на основе ProxyCommand", Проверено 18 июня 2014 г.
  16. ^ «Опасности открытия большого количества портов? (Мош)», ИТ-безопасность (обмен стеками), 13 апреля 2012 г. Проверено 28 марта 2013 г.
  17. ^ Мультиплексирование большего количества сессий в один и тот же UDP-порт
  18. ^ "используйте -p для определения удаленного порта UDP"
  19. ^ https://github.com/keithw/mosh/issues/2 «Поддержка прокрутки запланирована в версии 1.3»
  20. ^ «Прокрутка и альтернативный экран (было: использовать альтернативный экран в smcup / rmcup)»
  21. ^ "Переадресация агента SSH"
  22. ^ "Поддержка пересылки X"