Abro um túnel SSH programaticamente, com:
sshpass -p "my_password" ssh -fN -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes remote_user@remote_server.tld -L 13306:127.0.0.1:3306 sleep 3
e funciona conforme o esperado, mas não fecha após 3 segundos de inatividade.
Eu pego o SSH PID e mato explicitamente quando a conexão é finalizada; mas prefiro a sleep
versão, se puder fechar o túnel automaticamente.
O uso para sshpass
manter o túnel aberto ou estou fazendo algo errado?
Responder1
Você está usando
-f
Solicita que o ssh vá para segundo plano antes da execução do comando. Isso é útil se o ssh solicitar senhas ou frases secretas, mas o usuário quiser isso em segundo plano. Isso implica -n. A maneira recomendada de iniciar programas X11 em um local remoto é com algo como ssh -f host xterm.
e
-N
Não execute um comando remoto. Isso é útil apenas para encaminhar portas.
Que fica em segundo plano antes de executar um comando (que é suprimido). Portanto, fica em segundo plano. O sleep
nunca é executado e espera para ser morto.