Se usar o bom e velho ssh
em vez de autossh
, como você diz em sua própria resposta, funciona bem, ótimo, você pode parar de ler.
Eu tenho estado muitas vezes na situação que nenhuma quantia de afinação de configuração de ssh / sshd ajudaria, de vez em quando meu túnel fiel seria cair em oposição a bater suavemente, não importa o que. Em todas essas situações autossh
funcionou como um encanto.
Então, se você retornar a autossh
, aqui está como eu o uso. Em vez de inittab
, eu o executo dentro de uma sessão screen
. Crie um script simples, vamos chamá-lo de autossh.sh
:
#!/bin/sh
tunnelsite=autossh-host1
if ! screen -ls | grep -F .$tunnelsite >/dev/null; then
screen -d -m -S $tunnelsite autossh -N $tunnelsite
fi
O script apenas verifica se existe uma sessão de tela com o nome dado já em execução, saia dela sim, caso contrário, crie-a.
Programe um cron job para executar periodicamente:
*/15 * * * * AUTOSSH_PORT=0 /path/to/autossh.sh
O AUTOSSH_PORT=0
é apenas para solucionar um problema estranho que eu tive em um Mac OS X. Você pode omitir isso, mas estou usando esse método no Linux também sem problemas.
Por fim, uma dica de segurança: a menos que você já esteja fazendo isso, eu estou usando uma chave ssh dedicada para autenticar o túnel com autossh e restringindo a autorização de chave em .ssh/authorized_keys
com essas opções:
command="/bin/false",no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA...
Dessa forma, mesmo que sua chave seja comprometida, ela só poderá ser usada para criar o túnel.
Espero que isso ajude. Na verdade, tenho um projeto de script no GitHub para facilitar essa configuração. link