Я использую 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
Надеюсь, это поможет.