Eu tenho um túnel ssh configurado da seguinte forma:
ssh -N -L 1105:remote.server:25 office-machine&
Quero escrever um script para configurar uma verificação, digamos uma vez por minuto (o que posso fazer usando um cron job, talvez), que verificará se esta conexão está ativa, caso contrário, ele configurará a conexão (se a VPN estiver ligada ).
O que devo fazer para realizar a verificação do túnel ssh?
Desde já, obrigado.
PS: eu tentei
autossh -N -L 1105:remote.server:25 office-machine&
mas sai. Suspeito que as opções estejam corretas. Na verdade, a página de manual/ajuda indica que não há opções -N e -L, mas apenas -f e -M.
Responder1
Você pode usar autossh
para isso. Citandoa página de manual do Ubuntu:
autossh is a program to start a copy of ssh and monitor it, restarting it as necessary
should it die or stop passing traffic.
The original idea and the mechanism were from rstunnel (Reliable SSH Tunnel). With version
1.2 of autossh the method changed: autossh uses ssh to construct a loop of ssh forwardings
(one from local to remote, one from remote to local), and then sends test data that it
expects to get back. (The idea is thanks to Terrence Martin.)
Portanto, uma porta de monitoramento adicional deve ser especificada autossh
. Escolha alguma porta N para que N e N+1 sejam livres e use-a com a -M
opção, por exemplo,
autossh -M 20000 -N -L 1105:remote.server:25 office-machine
Você também pode desativar o monitoramento com -M 0
. Em sistemas baseados em Debian, autossh
é possível escolher uma porta livre para monitoramento automaticamente.
Se a sua conexão VPN morrer, autossh
você deve detectar através da porta de monitoramento que a conexão SSH não está mais ativa e tentar reiniciá-la. Depois disso:
Continued failures
If the ssh connection fails and attempts to restart it fail in quick succession, autossh
will start delaying its attempts to restart, gradually backing farther and farther off up to
a maximum interval of the autossh poll time (usually 10 minutes). autossh can be "prodded"
to retry by signalling it, perhaps with SIGHUP ("kill -HUP").