Утилита Mosh как замена SSH

Утилита Mosh как замена SSH

Mosh — является утилитой и имеет похожие функции как и у SSH. Он быстрее, особенно на линках с высокой задержкой, например, в мобильных сетях. Когда набираете любой символ, то его мгновенно можно увидеть на экране, так же, как и в локальном терминале. Не знаете почему так? А все потому, что в mosh внедрен так называемый local line editing и он не ждет ответа от сервера, а сразу все выдает на экран. Работает даже в полноэкранных приложениях, вроде vim или emacs.  Сейчас я в своей теме «Утилита Mosh как замена SSH» расскажу как можно установить на различные ОС Unix и Linux и так же покажу как пользоваться данной утилитой.

Возможности Mosh:

• Вы можете сменить ip оставаясь подключенным к серверу.
Большое количество утилит обрываются , если делать подключение, например, между wi-fi сетями, вот Mosh — нет.

• Он сохраняет сессию если вы потеряли подключения
Розьеденило от интернет? Перевели ноутбук  или ПК в сон? Mosh продолжит работу когда вы войдете в учетную запись заново и продолжите с того же места.

• Есть возможность запуска от имени пользователя
Он не использует ни демонов, и не нужно запускать его отroot, чтобы установить или запустить Mosh.

• Логиниться как прежде
Mosh не слушает портов и не производит аутентификацию. Mosh авторизовывается по ssh и запускает сервер через udp.

• Жать Control-C один раз
Mosh не заполняет сетевые буфферы и использует udp, так что если вы случайно вывели 100 мегабайтный файл на экран, ^C моментально остановит его вывод.

Как выглядит Mosh-сессия?
mosh подключается на сервер по SSH и запускает удаленный процесс mosh-server, который слушает на UDP портах от 60000 до 61000, закрывает SSH-соединение, запускает mosh-client с параметрами mosh-сервера, полученными на шаге 1.

Установка mosh

Утилиту mosh можно установить на различные юникс и линукс ОС и сейчас я покажу как можно установить на некоторые из них.

Для Debian стоит выполнить:

# sudo apt-get install mosh

Для Ubuntu/Mint стоит выполнить:

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

Для CentOS/RedHat/Fedora стоит выполнить:

# sudo yum install mosh

Для Arch Linux команда для установки:

# pacman -S mosh

Для Gentoo команда для установки:

# emerge net-misc/mosh

Для openSUSE 12.3 или выше

$ sudo zypper in mosh

Для FreeBSD выполните:

# pkg install net/mosh

Если хотите использовать на Mac OS X:
Качаем пакет

или с HomeBrew:

$ brew install mobile-shell

Я установил пакет и он очень хорошо работает!

Так же можно скомпилировать из исходного кода

1. С использованием Git

$ cd /usr/local/src
$ git clone https://github.com/keithw/mosh
$ cd mosh
$ ./autogen.sh
$ ./configure
$ make
# make install

2. качаем исходный код с mosh

$ cd /usr/local/src
$ wget https://mosh.mit.edu/mosh-1.2.4.tar.gz
$ tar zxfv mosh-1.2.4.tar.gz
$ cd mosh-1.2.4
$ ./configure
$ make
# make install

Настройка firewall (межсетевого экрана)

Если у вас есть брандмауэр на VPS (что рекомендуется), вам также понадобится открыть дополнительные порты для mosh.

Если вы используете IPTables непосредственно, следующая команда будет служить для открытия портов, которые требуются:

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

Помните, что, по умолчанию этот параметр брандмауэра, не сохраняется после перезагрузки системы. Такие решения, как iptables-persistant существуют, чтобы увеличить это поведение.

Если вы используете UFW, вы можете открыть порты таким образом:

# sudo ufw allow 60000:61000/udp

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

Использование утилиты mosh

Использовать mosh так же просто, как и привычный ssh — в большинстве случаев, просто меняете ssh на mosh:

$ mosh my_host.com

С использованием пользователя и хоста:

$ mosh user_name@my_host.com

Запустить интерактивную команду вместо $SHELL:

$ mosh my_host.com top

Использование другого порта для сессии на сервере:

$ mosh --ssh="ssh -p 2213" my_host.com

Ввод других опций для ssh-клиента:

# mosh --ssh="~/bin/ssh -i ./identity" my_host.com

С командой:

$ mosh pello -- screen -dr

Выбор Мош UDP порта:

$ mosh -p 1234 darth

Отключить мгновенный отклик:

$ mosh --predict=never niennunb

Ключ «-n» является синонимом. В противоположность этому, проходя «—predict=always» или «-a» позволит мгновенный локальный эха даже по ссылкам с низкой задержкой.

mosh

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

Тем не менее, эта система имеет один недостаток: из-за синхронизации Мош в лишь текущего состояния экрана, ваш терминал не будет поддерживать прокрутки буфера предыдущего выхода программы. Следовательно, рекомендуется использовать терминальный мультиплексор, например tmux на VPS, чтобы сохранить этот выход.

PS: можно установить плагин даже на браузер. Я себе установил на google chrome. Работает идеально!

На этом я завершаю статью «Утилита Mosh как замена SSH».

2 thoughts on “Утилита Mosh как замена SSH

  1. > Если у вас есть брандмауэр на VPS (что рекомендуется), вам также понадобится открыть дополнительные порты для mosh.

    Ну и где открывать эти порты?? Есть сервер, а есть локальный комп!
    Головой когда будешь думать, когда статьи пишешь???

    • Собственно, а где я не прав был?

      Если включен фаэрвол, то нужно пробросить порт(ы), если выключенный, то не нужно.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.