Как поддерживать SSH тунель активным
Есть компьютер с ubuntu 16 у которого серый IP, и есть vps - хочу как-то держать постоянно активным ssh тунель от vps до компьютера.
Сейчас, для простоты персонала, на компьютере bash скрипт который который создает туннель от себя до сервера, но для его запуска нужно что-бы кто-то запустил скрипт. Можно поставить в автозапуск скрипт, но если пропадет интернет, то и соединение прервется.
Можно в теории написать срипт, который будет раз в минуту смотреть активные соединения, и если ssh не будет то скрипт будет перезапускать скрипт, который создает тунель. Или как правильно сделать так что бы было активное соединение по ssh с vps, и чтобы если соединение прервано, то создавалась занова?
Может есть кикие-то готовые решения? Программы по типу AnyDesk не подходят, из-за того что я буду забирать у персонала управление над компьютером.
Ответы (2 шт):
С опцией ServerAliveInterval=5 клиент будет посылать каждые 5 секунд сообщения поддержания сессии, и если сообщение не доходит, то сессия обрывается сразу.
Скрипт запуска приведи к виду, например:
while true
do
ssh 203.0.113.2 -l root -N -R 0.0.0.0:0:127.0.0.1:22 -o ServerAliveInterval=5
done
При обрыве связи ssh будет обрываться и переподключаться в вечном цикле
Добавлю свои 5 копеек.
Для устойчивой работы через соединение SSH можно использовать mosh.
Mosh — программа для удалённого подключения с клиентского компьютера к серверу через Интернет. Предоставляет доступ к текстовому терминалу. Mosh аналогичен приложению SSH, но имеет дополнительные функции, предназначенные для повышения удобства работы мобильных пользователей.
Основные задачи, которые решает mosh:
- Возможность роуминга ssh-соединений. Переключайтесь между wi-fi сетями, не бойтесь смены IP в мобильных сетях — соединение не разорвется. От себя замечу, можно закрыть ноутбук на работе и открыть уже дома, vim открыт с курсором в том же месте, где вы делали последнее редактирование, как будто соединение не пропадало вовсе.
- Уменьшение лагов насколько это возможно, за счет использования UDP и умного predictive echo.
- Оптимизация использования сети — протокол mosh позволяет передавать только то, что должно быть отображено. В итоге Сtrl-C работает мгновенно, даже если вы выплюнули в консоль содержимое 500GB файла.
- Максимальная обратная совместимость — от пользователя требуется минимум телодвижений и знаний, чтобы начать использовать mosh.
Как правило, remote-shell протоколы исповедуют подход «сервер отправляет все данные клиенту, а клиент уже разбирается, как их отображать». Mosh идет другим путем и хранит состояние экрана на клиенте и сервере, и эти два состояния постоянно синхронизирует — собственно, протокол так и называется — State Synchronization Protocol. Протокол позволяет контролировать частоту синхронизации, в зависимости от качества сетевого соединения.