Você provavelmente desejará usar as configurações de ServerAlive para isso. Eles não requerem nenhuma configuração no servidor e podem ser configurados na linha de comando, se você desejar.
ssh -o ServerAliveInterval=5 -o ServerAliveCountMax=1 $HOST
Isso enviará uma mensagem ssh keepalive a cada 5 segundos, e, se chegar a hora de enviar outro keepalive, mas uma resposta ao último não tiver sido recebida, a conexão será encerrada.
A diferença crítica entre ServerAliveInterval
e TCPKeepAlive
é a camada em que operam.
-
TCPKeepAlive
opera na camada TCP. Ele envia um pacote TCP ACK vazio. Os firewalls podem ser configurados para ignorar esses pacotes, portanto, se você passar por um firewall que solte conexões inativas, elas podem não manter a conexão ativa. -
ServerAliveInterval
opera na camada ssh. Ele realmente enviará dados por meio do ssh, de modo que o pacote TCP tenha dados criptografados e um firewall não possa dizer se é um pacote keepalive ou legítimo, para que eles funcionem melhor.