@Richard_Ferlow
Веб-программист

Как сделать чтобы ssh тоннели создавались и переподключались автоматически?

linux я практически не знаю. задача такая - чтобы с сервера подключаться к базам данных, которые расположены на других серверах. как вручную создавать тоннели я вроде разобрался и все работает. но насколько понимаю работают они ровно до того момента пока я не закрою Putty (т.е. к серверу подключаюсь через ssh тоже).
так вот - как сделать чтобы подключения эти выполнялись при загрузке основного сервера и пытались автовосстановиться в случае обрывов там допустим. ищу-читаю, но знаний нехватает чтобы это как-то применить. нашёл что бывает пакет autossh который вроде эту проблему решает, но не могу найти объяснений как этим воспользоваться для решения моей задачи.
благодарен за любую помощь =)
  • Вопрос задан
  • 485 просмотров
Решения вопроса 1
gbg
@gbg
Любые ответы на любые вопросы
autossh нужно запускать вместе с системой, например, затолкав его в systemd.
[Unit]
Description=AutoSSH service for port 2222
After=network.target

[Service]
Environment="AUTOSSH_GATETIME=0"
ExecStart=/usr/bin/autossh -M 0 -NL 2221:localhost:2222 -o TCPKeepAlive=yes foo@bar.com

[Install]
WantedBy=multi-user.target

Здесь
  • 2221 - порт, который откроется на локальной машине,
  • 2222 - порт на удаленной машине, куда он будет перенаправлен
  • foo - логин на удаленной машине
  • bar.com - адрес удаленной машины


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

Создание и пересылка ключевой пары (на скорую руку)

ssh-keygen -b4096

На все вопросы ответить утвердительно - Enter, парольную фразу не задавать

ssh-copy-id логин@хост

Ввести пароль от удаленного хоста.

После этого

ssh логин@хост

будет работать без пароля

Учтите, что делать это нужно под тем же пользователем, под которым работает скрипт, скорее всего - root
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
flock -n /tmp/tun-lock -c "autossh -R 8080:127.0.0.1:8080 user@host"
В крон на раз в 5 минут, например.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы