У меня есть хост, который мне нужно развернуть в сети, к которой у меня некоторое время не будет физического доступа, поэтому я настроил постоянное обратное 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 на сервере завершается, процесс на клиенте не завершается, в результате чего сценарий не пытается установить новый сеанс.
Я замечаю, что когда соединение запускается вручную с интерактивного терминала, проблем нет, то есть клиент умирает вместе с процессом на стороне сервера при завершении.

Любая помощь будет оценена, спасибо.

0