Перейти к основному содержимому

Хватит использовать SSH

· 2 мин. чтения

Обычный SSH работает по TCP. Из-за этого при потери соединения он сразу дисконнектится и нужно переподключаться заново, теряя всю сессию, если только не используется Screen или Tmux.

📺 MOSH (Mobile Shell) использует UDP и "держит соединение" даже если комп неделю был в спящем режиме, переподключался к разным сетям, сменял прокси и VPN ну или даже пережил апокалипсис.

Впервые узнав о нем несколько лет назад, я попал на какой-то сайт с дизайном 10х годов, а на GitHub продукт изредка кто-то тыкал палкой, поддерживая его, казалось бы, синтетическую жизнь. Проигнорил его за это, как мертвый продукт

И все же, вот сейчас где-то снова услышал и решил, что мол и хер с ним, узнаю почему его юзают и уже вот несколько недель почти не пишу в терминал ssh, ведь все нужные сервера у меня уже открыты во вкладках Hyper ⌨️.

💡 Юз кейсы

Сейчас у меня 4 вкладки:

  • screen с консолью игрового сервера, на котором я веду разработку
  • screen с консолькой моих Telegram ботов
  • docker compose logs -f с одним моим сайтом, чтобы видеть что там происходит
  • и tail -f some.log , где я глазами ловлю ошибки и всякие дебаг принты

Временами тут еще бывает 2 других моих сервера, где я играюсь с разными docker плюшками.

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

🔧 Установка

  • Mac: brew install mosh
  • Ubuntu: apt install mosh
  • Android и куча другого: тут
подсказка

На сервере, куда подключаешься тоже должен быть установлен mosh

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

# Для подключения к host под юзером user
mosh [user@]host

# Если ssh работает на другом порту,
# то опции нужно подставлять немного не так, как в обычном ssh
mosh --ssh="ssh -p 2222" host

Еще mosh понимает ~/.ssh/config файл, но через mosh alias подключиться у меня не получилось, хотя ssh ключ оно взяло именно оттуда