Como manter o túnel SSH vivo

2

Bom dia, eu tenho o script de shell que faz um monte de coisas, incluindo a abertura de túneis SSH para os servidores e serviços específicos. Não há problema em configurar o túnel, testá-lo e desligar o túnel. Mas eu tenho um problema em manter os túneis vivos. Infelizmente eu não posso mudar a configuração no servidor, então eu preciso implementar algum tipo de "keep alive mechanism" do meu lado. Aqui está a função que abre o túnel:

ssh_tunnel_up () {
  if lsof -Pi :${local_port} -sTCP:LISTEN -t > /dev/null ; then
  echo "Port is in use, please check with netstat -anlp | grep   ${local_port}. Exiting..."
else
/usr/bin/ssh -24 -fN ${username}@${node_dev} -L ${server_local_port}:${server_dev}:${server_remote_port}
   if [[ $? -eq 0 ]]; then
    echo "Tunnel to Server UI created successfully"
   else
    echo "An error occurred creating a tunnel  RC was $?"
   fi
 fi

}

Aqui está a função que termina o túnel:

ssh_tunnel_down () {
   if lsof -Pi :${local_port} -sTCP:LISTEN -t >/dev/null ; then
     while lsof -t -i:${local_port} > /dev/null ; do
       echo "Port is in use. Closing the port"
       kill -9 $( lsof -t -i:${local_port} )
       sleep 1
     done
   else
     echo "Port is already free. Nothing to do. Exiting..."
   fi
}

Minha pergunta é, como manter o túnel ativo e como finalizar o "mecanismo keep alive" quando você terminar o túnel. Eu acho que tenho que usar o laço while done , mas não consigo descobrir como implementar isso.

Muito obrigado Alex

    
por Alex Miroshnyk 30.12.2016 / 13:41

1 resposta

0

Em (HOMEDIR) /. ssh / config, adicione isto:

Host *
ServerAliveInterval 60
    
por 30.12.2016 / 13:54