Como evitar que o autossh fique preso de vez em quando?

12

Estou usando autosshpara construir um túnel ssh reverso, mas de tempos em tempos o túnel para de funcionar e preciso matar o autossh e iniciá-lo novamente.

/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:intranet.example.com:3269 public.example.com &

O autossh parece permanecer em um estado estranho, onde a porta encaminhada ainda está aberta, mas você não recebe resposta do outro lado. Ao reiniciar o autossh, isso é resolvido.

Como posso evitar que esse problema ocorra?

sorin
fonte

Respostas:

6

Use o ServerAliveInterval(com um valor em segundos) para fazer com que o ssh cliente envie um pacote nulo (keepalive) sobre o canal criptografado de vez em quando para detectar uma conexão interrompida:

/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:intranet.example.com:3269 -o ServerAliveInterval=30 public.example.com &

Você provavelmente também deve definir a ClientAliveIntervalconfiguração correspondente em /etc/ssh/sshd_configseu servidor para fazer com que o servidor também elimine as conexões de clientes inoperantes:

# Drop dead client connections after 10 minutes of inactivity
ClientAliveInterval 600
Tyson
fonte