Auto-Establishing SSH Tunnels


SSH Tunnels – Auto-Establishing

I have a cron job which connects manually replicates a database over an SSH tunnel for those ‘Oh Sh!t’ moments. Sometimes that SSH tunnel will drop or fail to establish. Within the cron job I needed a way to make sure that didn’t happen.

The Code

The code below is the first part of the bash file executed by cron.

We run netstat -a and grep for the port the tunnel is supposed to be established on, and if it is less than 2, it will execute and create the tunnel.

TUNNEL=$(netstat -a | grep -c 3307)

if [ $TUNNEL -lt 2 ]; then
ssh -f root@$REMOTEHOST -L 3307:localhost:3306 -N

After the above snippet, you can continue whatever script or application which needed the SSH tunnel to be established.