Concordo com MadHatter, que é provável que sejam encaminhamentos de porta de conexões ssh extintas. Mesmo que o seu problema atual seja outra coisa, você pode esperar entrar em tais conexões ssh mais cedo ou mais tarde.
Existem três maneiras pelas quais essas conexões desativadas podem acontecer:
- Um dos dois pontos de extremidade foi reinicializado enquanto a outra extremidade da conexão estava completamente inativa.
- Um dos dois pontos de extremidade fechou a conexão, mas no momento em que a conexão foi fechada, houve uma interrupção temporária na conexão. A interrupção durou alguns minutos depois que a conexão foi fechada e, portanto, a outra extremidade nunca aprendeu sobre a conexão fechada.
- A conexão ainda é completamente funcional em ambos os pontos de extremidade da conexão ssh, mas alguém colocou um dispositivo com monitoração de estado em algum lugar entre eles, o que atingiu o tempo limite da conexão devido à ociosidade. Este dispositivo stateful seria um NAT ou um firewall, o firewall que você já mencionou é o principal suspeito.
Descobrir qual dos três acima está acontecendo não é muito importante, porque existe um método, que irá abordar todos os três. Esse é o uso de mensagens keepalive.
Você deve pesquisar a palavra-chave ClientAliveInterval
para sshd_config
e o ServerAliveInterval
interval para ssh_config
ou ~/.ssh/config
.
A execução do comando ssh
em um loop pode funcionar bem. É uma boa idéia inserir um sleep no loop, de modo que você não acabe inundando o servidor quando a conexão falhar por algum motivo.
Se o cliente se reconectar antes que a conexão tenha terminado no servidor, você poderá acabar em uma situação em que a nova conexão ssh esteja ativa, mas não tenha nenhum encaminhamento de porta. Para evitar isso, você precisa usar a palavra-chave ExitOnForwardFailure
no lado do cliente.