Tengo un túnel ssh configurado de la siguiente manera:
ssh -N -L 1105:remote.server:25 office-machine&
Quiero escribir un script para configurar una verificación, digamos una vez por minuto (lo que puedo hacer usando un trabajo cron, tal vez), que verificará si esta conexión está activa; de lo contrario, configurará la conexión (si vpn está activado). ).
¿Qué hago para realizar la verificación del túnel ssh?
Gracias de antemano.
PD: lo intenté
autossh -N -L 1105:remote.server:25 office-machine&
pero sale. Sospecho que las opciones son correctas. De hecho, la página de manual/ayuda indica que no hay opciones -N y -L, sino solo -f y -M.
Respuesta1
Puedes usar autossh
para esto. Citandola página de manual de 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.)
Por lo tanto, se debe especificar un puerto de monitoreo adicional autossh
. Elija algún puerto N para que tanto N como N+1 estén libres y utilícelo con la -M
opción, por ejemplo,
autossh -M 20000 -N -L 1105:remote.server:25 office-machine
También puedes desactivar la monitorización con -M 0
. En sistemas basados en Debian, autossh
puede elegir un puerto libre para monitorear automáticamente.
Si su conexión VPN muere, autossh
debe detectar a través del puerto de monitoreo que la conexión SSH ya no está activa y luego intentar reiniciarla. Después:
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").