Coding Overhead

Do the best with what you have

Mosh как замена ssh

Не так давно открыл для себя “замену” ssh — mosh (mobile shell). Эта утилита работает поверх ssh и предоставляет по сути пару полезных плюшек:

Под постоянным подключением имеется ввиду, что единожды подключившись можно не думать о том, что придётся переподключаться к ssh-серверу при подключении к другой сети или выходу из suspend/hibernate. Mosh делает это прозрачно. На ноутбуке подключен к паре ssh-серверов постоянно и могу работать с ними вне зависимости от того, через какую сеть подключился. Могу отправлять ноутбук в сон, а просыпаясь все подключения живы.

Насчёт ускорения вывода я не уверен. На оф. сайте написано, что mosh может не дожидаться ответа от сервера в отличие от ssh, а предугадывать вывод. Лично я не особо заметил разницы.

А что собственно необходимо, чтобы установить mosh? Достаточно поставить на клиенте и сервере пакет mosh (пакет один, не разделён на серверную и клиентскую части) и при подключении просто вызывать mosh вместо ssh:

$ mosh <SERVER>

Вместе с SERVER можно сразу передавать логин как и с ssh: <LOGIN>@<SERVER>. Также есть возможность указывать способ вызова ssh. Самое важное применение для этого — это указание порта ssh:

$ mosh --ssh="ssh -p 2222" <SERVER>

Необходимо учитывать, что ключ -p в mosh используется для задания собственного порта.

При дисконнекте mosh пытается переподключиться. При этом он не очищает вывод в консоли и не передаёт управление локальному шеллу. Чтобы всё-таки завершить выполнение mosh, есть комбинация клавиш: C-^ .. Если по-русски, то, зажав Control, нажать 6, а затем, отпустив, точку. Собственно при потере соединения mosh выводит соответствующую подсказку на верхней строке терминала.