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