Daemon para N túneis autossh

2

Eu uso o autossh para criar um túnel persistente de localhost para remotehost.

Iniciar o autossh manualmente funciona bem, mas se o host local for reinicializado, o túnel desaparecerá. Isso não é surpresa.

Como criar um daemon para reabrir cerca de 20 túneis após a reinicialização do host local?

Servidor: Linux com suporte ao systemd

    
por guettli 20.10.2015 / 10:01

3 respostas

2

Eu encontrei um arquivo systemd para iniciar um daemon do autossh. No meu caso eu precisaria criar N tais arquivos:

[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

Fonte: link

    
por 20.10.2015 / 16:09
1

Adicione o comando que você normalmente executa a /etc/rc.local e coloque um & no final, se for.

    
por 20.10.2015 / 10:33
1

Usamos monit para monitorar / gerenciar localmente vários processos em nossos servidores. Para gerenciar autossh instâncias usando monit , instale o pacote monit e crie um arquivo de configuração /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 [email protected]'" as uid user1 and group group1
  stop program = "/bin/bash -c 'kill 'cat /tmp/autossh1.pid''"
  group autossh

Em seguida, reinicie o monit com sudo service monit restart .

Se você quiser executar o processo como root, omite o as uid user1 and group group1 no final da linha start program = .

monit verificará periodicamente se o processo está sendo executado e irá reiniciá-lo, se necessário. Você pode exibir o status dos processos gerenciados por monit:

monit summary

Você também pode facilmente interromper / iniciar o processo executando

monit stop autossh1
monit start autossh1

Você pode até criar grupos (como ilustrado pela linha group autossh ) e depois parar / iniciar grupos inteiros:

monit stop -g autossh
monit start -g autossh

A propósito, a ferramenta de linha de comando monit usa HTTP para se comunicar com o daemon. Para fazer o trabalho de comunicação, você precisa incluir o seguinte em /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

Espero que ajude.

    
por 20.10.2015 / 12:54