Назад | Перейти на главную страницу

Демон для N туннелей autossh

Я использую autossh для создания постоянного туннеля от локального хоста к удаленному.

Запуск autossh вручную работает нормально, но при перезагрузке localhost туннель пропадает. Это не удивительно.

Как создать демона для повторного открытия около 20 туннелей после перезагрузки localhost?

Сервер: Linux с поддержкой systemd

Я нашел файл systemd для запуска демона autossh. В моем случае мне нужно было бы создать N таких файлов:

[Unit]
Description=Keeps a tunnel to 'remote.example.com' open
After=network.target

[Service]
User=autossh
# -p [PORT]
# -l [user]
# -M 0 --> no monitoring
# -N Just open the connection and do nothing (not interactive)
# LOCALPORT:IP_ON_EXAMPLE_COM:PORT_ON_EXAMPLE_COM
ExecStart=/usr/bin/autossh -M 0 -N -q -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -p 22 -l autossh remote.example.com -L 7474:127.0.0.1:7474 -i /home/autossh/.ssh/id_rsa

[Install]
WantedBy=multi-user.target

Источник: https://gist.github.com/thomasfr/9707568

Добавьте любую команду, которую вы обычно запускаете /etc/rc.local и поставить & в конце, если это.

Мы используем monit для локального мониторинга / управления различными процессами на наших серверах. Справляться autossh экземпляры, использующие monit, установите monit пакет и создать файл конфигурации /etc/monit/conf.d/autossh.conf:

check process autossh1 pidfile "/tmp/autossh1.pid"
  start program = "/bin/bash -c 'export AUTOSSH_PIDFILE=/tmp/autossh1.pid; autossh -f user@host.example.com'" as uid user1 and group group1
  stop program = "/bin/bash -c 'kill `cat /tmp/autossh1.pid`'"
  group autossh

Затем перезапустите monit с помощью sudo service monit restart.

Если вы хотите запустить процесс как root, вы можете опустить as uid user1 and group group1 в конце start program = линия.

monit будет периодически проверять, запущен ли процесс, и при необходимости перезапускать его. Вы можете отображать статус процессов, которыми управляет monit:

monit summary

Вы также можете легко остановить / запустить процесс, запустив

monit stop autossh1
monit start autossh1

Вы даже можете создавать группы (как показано линией group autossh), а затем останавливать / запускать целые группы:

monit stop -g autossh
monit start -g autossh

Кстати, monit инструмент командной строки использует HTTP для связи с демоном. Чтобы коммуникация работала, вам необходимо включить в /etc/monit/monitrc:

set httpd port 2812 and
    use address localhost  # only accept connection from localhost
    allow localhost        # allow localhost to connect to the server

Надеюсь, это поможет.