Поиск по сайту:

Что такое оболочка Mosh и как ее использовать?


Mosh, или «Mobile Shell», предназначен для замены SSH, особенно для мобильных устройств или ноутбуков с медленным соединением. Mosh работает через UDP и будет поддерживать ваше соединение, даже если вы меняете сети Wi-Fi или сталкиваетесь с колебаниями сигнала сотовой связи.

Что такое Мош?

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

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

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

Но Mosh и tmux также хорошо сочетаются друг с другом, поскольку Mosh автоматически повторно подключит вас к сеансу tmux, если ваше подключение прервется, без необходимости запускать ssh и tmux. a t [имя] снова.

Насколько безопасен Мош?

Mosh устанавливает начальное соединение через SSH, поэтому аутентификация такая же безопасная, как и SSH. Он использует шифрование AES-128 для трафика, отправляемого по протоколу UDP, поэтому ваш трафик невозможно перехватить.

Основная проблема с Mosh заключается в том, что он требует, чтобы было открыто много портов. Mosh может использовать любой порт в диапазоне 60 000–61 000, в зависимости от IP-адреса подключения. И хотя вы обычно будете использовать один и тот же порт на протяжении всего соединения, это не гарантируется. Это не серьезная проблема, но открытие 1000 портов не очень хорошая практика безопасности.

Если вы используете брандмауэр, такой как iptables, вам придется открыть эти порты вручную:

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

И если вы используете сервер в такой службе, как AWS, вам также необходимо открыть порты через их брандмауэр. Если вы хотите, чтобы это было более безопасно, вы можете использовать стук портов, чтобы закрыть эти адреса и открывать их только тогда, когда Мош стучит, но это также не идеально, если порт меняется во время вашего сеанса.

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

Установите сервер Mosh и получите клиент Mosh

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

Установка довольно проста, так как она доступна в большинстве менеджеров пакетов. Для систем на основе Debian, таких как Ubuntu, это будет:

sudo apt-get install mosh

Это установит клиент и сервер, поэтому вы установите один и тот же пакет на обоих. Для установки, ориентированной на сервер, вам просто потребуется заменить менеджер пакетов вашего дистрибутива на apt-get.

Для Windows вам придется установить клиент для Chrome. Для Windows пока нет бинарника.

Для macOS вы можете установить пакет напрямую или установить его с помощью Homebrew:

brew install mosh

Для iOS вы можете использовать такие приложения, как Termius или Blink Shell.

А для Android вы можете использовать такие приложения, как Termux или JuiceSSH.

В любом случае вы будете подключаться так же, как и с SSH:

mosh user@server

Это связано с именем пользователя и паролем. Если это не идеально для вас, вы также можете вручную указать новые параметры SSH с параметром --ssh :

mosh --ssh="~/bin/ssh -i ~/ssh/id_rsa" user@port

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