У меня есть хост, который мне нужно развернуть в сети, к которой у меня некоторое время не будет физического доступа, поэтому я настроил постоянное обратное ssh-соединение из руководства, используя cron и скрипт ниже:
#!/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 user@example.com
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
Работа cron просто:
crontab -e
*/1 * * * * /root/scripts/ssh_tunnel.sh > tunnel.log 2>&1
Мне нужно ssh сессий для автоматического восстановления в случае прерывания. В настоящее время, если процесс sshd на сервере завершается, процесс на клиенте не завершается, в результате чего сценарий не пытается установить новый сеанс.
Я замечаю, что когда соединение запускается вручную с интерактивного терминала, проблем нет, то есть клиент умирает вместе с процессом на стороне сервера при завершении.
Любая помощь будет оценена, спасибо.