Eu tenho um host que preciso implantar em uma rede para a qual não terei acesso físico por algum tempo, por isso configurei uma conexão ssh reversa persistente a partir de um guia, usando o cron e o script abaixo:
#!/bin/bash
# install with crontab -e
# */1 * * * * /root/scripts/ssh_tunnel.sh > tunnel.log 2>&1
createTunnel() {
/usr/bin/ssh -i /home/user/cert.pem -N -R 9999:localhost:22 [email protected]
if [[ $? -eq 0 ]]; then
echo Tunnel to jumpbox created successfully
else
echo An error occurred creating a tunnel to jumpbox. RC was $?
fi
}
/bin/pidof ssh
if [[ $? -ne 0 ]]; then
echo Creating new tunnel connection
createTunnel
fi
O cron job é simplesmente:
crontab -e
*/1 * * * * /root/scripts/ssh_tunnel.sh > tunnel.log 2>&1
Eu preciso que as sessões do ssh sejam restabelecidas automaticamente em caso de interrupção. Atualmente, se o processo sshd no servidor for encerrado, o processo no cliente não será encerrado, com o resultado de que o script não tentará estabelecer uma nova sessão.
Percebo que quando a conexão é iniciada manualmente a partir de um terminal interativo, não há problema, ou seja, o cliente morre junto com o processo do lado do servidor na terminação.
Qualquer ajuda seria apreciada, obrigado.