Eu estava tendo os mesmos problemas com /etc/rc.local
não sendo persistente durante as reinicializações
O Upstart é uma boa solução e isso funciona para mim:
# location: /etc/init/tunnel.conf
description "persistent ssh tunnel through reboots"
author "morgan mcdaris <[email protected]>"
start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [016]
respawn
respawn limit 5 60
script
exec su LOCAL_USERNAME -c "ssh -N -R 4040:localhost:22 -i /home/LOCAL_USERNAME/.ssh/id_rsa REMOTE_USERNAME@REMOTE_MACHINE_IP"
end script
post-start script
PID='status tunnel | egrep -oi '([0-9]+)$' | head -n1'
echo $PID > /var/run/tunnel.pid
end script
post-stop script
rm -f /var/run/tunnel.pid
end script
você precisa inserir seus valores para:
%código%
%código%
LOCAL_USERNAME
depois disso, você pode iniciá-lo reinicializando ou:
$ sudo start tunnel
os scripts de pós-inicialização dão um arquivo pid se você quiser fazer algumas coisas de monit