Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

Дизайн [ править ]

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

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

Mosh доступен для большинства дистрибутивов Linux , macOS , FreeBSD , NetBSD и OpenBSD , Android , Solaris , Cygwin и в виде приложения Chrome . [2] Программа Termius для iOS включает независимую реализацию протокола Mosh. [9]

Производительность [ править ]

Роуминг [ править ]

Mosh построен на протоколе State-Synchronization Protocol (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]
Смягчение:

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

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

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

Отсутствие пересылки ssh-agent [ править ]

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

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

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

См. Также [ править ]

  • Блочно-ориентированный терминал
  • tmux
  • Безопасная оболочка
  • Интерфейс командной строки

Ссылки [ править ]

  1. ^ Уинстейна, Keith (22 июля 2017). "Выпущен mosh 1.3.2" . mosh-users (Список рассылки) . Проверено 31 июля 2017 года . CS1 maint: discouraged parameter (link)
  2. ^ a b c d e "Мош: мобильная оболочка" . Проверено 28 марта 2013 г.
  3. ^ Брокмайер, Джо. «Into the Mosh Pit: A Mobile Shell Replacement for SSH». Архивировано 20 марта 2014 г.на Wayback Machine , linux.com , 10 апреля 2012 г. Проверено 28 марта 2013 г.
  4. ^ Делони, Дэвид. «Mosh: Secure Shell Without the Pain» , Technopedia , 19 октября 2012 года. Проверено 28 марта 2013 года.
  5. ^ Кокс, Джон. «Исследователи Массачусетского технологического института изучают новый подход к протоколам мобильного Интернета». Архивировано 18 октября 2012 г. в Wayback Machine , Network World , 6 июля 2012 г. Проверено 28 марта 2013 г.
  6. ^ Бекерт, Аксель. «Mosh и AutoSSH: инструменты удаленной оболочки, которые облегчают вашу жизнь в медленной или постоянно изменяющейся сети» , Linux Magazine , ноябрь 2012 г.
  7. ^ Лейден, Джон. «Читающий мысли Мош из Массачусетского технологического института противопоставляет себя демонам SSH» , The Register , 13 апреля 2012 г. Проверено 28 марта 2013 г.
  8. ^ a b c d Винштейн, Кит. «Mosh: интерактивная удаленная оболочка для мобильных клиентов» , Ежегодная техническая конференция USENIX 2012, Бостон, Массачусетс, 14 июня 2012 г.
  9. ^ "Termius Features" , Crystalnix.
  10. ^ "MIT представляет новый Интернет-протокол для мобильных клиентов"
  11. ^ Уинстейна, Кит и Balakrishnan, Хари. «Mosh: интерактивная удаленная оболочка для мобильных клиентов (более подробный черновик)» . Проверено 28 марта 2013 г.
  12. ^ Нагарадж Kanthi и McMilin, Эмили. "Mosh" , Репродуктивное исследование сети , 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. ^ «Опасности открытия широкого диапазона портов? (Mosh)» , IT Security (Stack Exchange) , 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-пересылки"