Установка и использование Mosh

SSH, безусловно, является самым популярным методом управления удаленным сервером. Однако распространенность этого протокола не означает, что он не имеет своих нюансов (в особенности об этом знают пользователи, столкнувшиеся с необходимостью поддерживать SSH-соединение при помощи мобильных устройств).

Утилита Mosh (сокращение от mobile shell), обладающая всеми преимуществами безопасности SSH, является более устойчивой в условиях плохих сетевых и мобильных соединений. Кроме того, данное приложение увеличивает способность к реагированию и снижает использование полосы пропускания.

Создание подключения и авторизация в Mosh происходят через обычное соединение SSH, что значит, что для безупречной работы каких-либо механизмов безопасности на основе ключей нужно внести всего несколько дополнительных конфигураций. После проверки подлинности ключа Mosh начинает взаимодействие через зашифрованные датаграммы UDP, что делает сессию более устойчивой к изменяющимся клиентским IP-адресам и перебоям соединений, которые часто случаются при использовании мобильных устройств.

Благодаря всем вышеперечисленным возможностям Mosh является отличным выбором для пользователей, которым часто приходится работать в дороге.

Установка Mosh

Приступим к установке приложения Mosh. К счастью, все необходимые пакеты очень просто установить на популярные дистрибутивы Linux:

  • Ubuntu

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:keithw/mosh
sudo apt-get update
sudo apt-get install mosh

  • Debian:

sudo apt-get install mosh

  • Arch Linux:

pacman -S mosh

  • Fedora:

sudo yum install mosh

Наиболее удобные способы установки Mosh в другие системы (например, OSX или Windows) можно найти в документации проекта.

Настройка фаервола

Если на сервере есть настроенный брандмауэр, нужно открыть дополнительные порты для Mosh.

Чтобы открыть необходимые Mosh порты в iptables, используйте команду:

sudo iptables -I INPUT 1 -p udp --dport 60000:61000 -j ACCEPT

Запомните: по умолчанию эта настройка фаервола будет сброшена после следующей перезагрузки системы; чтобы сделать эту настройку постоянной, можно использовать инструмент iptables-persistant.

При использовании UFW порты можно открыть при помощи:

sudo ufw allow 60000:61000/udp

Если же на сервере настроен какой-либо другой фаервол, откройте порты 60000-61000 вручную. Хотя если вам не понадобится большое количество соединений, можно открыть более узкий диапазон портов, начиная с порта 60000 (например, 60000:60020).

Использование Mosh

В большинстве случаев Mosh используется в качестве простой замены SSH, а это значит, что большинство команд SSH просто нуждается в небольшом изменении. Например:

ssh user@example.com
# становится:
mosh user@example.com

Однако для работы с флагами SSH нужен немного другой синтаксис:

mosh --ssh="ssh -p 22000" user@example.com

После выполнения команды Mosh развернет оболочку, очень похожую на стандартное соединение SSH. Хотя на самом деле Mosh – не просто программный канал, данное приложение имеет множество уникальных функций, позволяющих значительно улучшить плохие соединения.

В то время как SSH передает полный вывод данных любой программы, работающей на удаленном компьютере, Mosh работает как конечный автомат на каждом конце соединения и выдает только изменения, видимые на экране в настоящее время. Это позволяет существенно сократить использование полосы пропускания и увеличить способность к реагированию, что устраняет некоторые распространенные проблемы при использовании мобильных устройств.

В случае полного сбоя подключения Mosh быстро сообщит об этом при помощи строки состояния в верхней части окна, указав время с момента последнего успешного подключения.

После восстановления подключения Mosh  автоматически ресинхронизирует его, и вы сможете продолжить сессию с момента разрыва соединения.

Стоит также отметить, что даже при медленном или слабом соединении Mosh позволяет вводить команды в терминал и просматривать вывод. Иногда Mosh возвращает результат в подчеркнутом виде; это значит, что приложение предположило, как будет выглядеть ответ удаленного терминала. Если такое подчеркивание пропадает, значит, оба конца соединения снова синхронизированы.

Однако это приложение имеет один недостаток: в связи с тем, что Mosh синхронизирует только текущее состояние экрана, локальный терминал не будет поддерживать буфер обратной прокрутки предыдущих результатов программы. Потому рекомендуется использовать терминальный мультиплексор (например, screen или tmux) на серверной стороне, чтобы сохранить эти данные.

Итоги

Данная статья выделила основные преимущества приложения Mosh при использовании мобильных устройств для подключения к удаленному серверу. Конечно, эта утилита не призвана полностью заменить SSH, но в ситуациях, когда приходится использовать слабое соединение, она способна сделать его гораздо более продуктивным.

Tags: , , , , , , , , ,

Добавить комментарий