A resposta real é quase sempre que você tem um dispositivo NAT de algum tipo no caminho, geralmente um firewall, cujas tabelas de estado têm um tempo limite bastante agressivo. Como você deixa sua conexão ssh ociosa por alguns períodos de tempo, o dispositivo NAT "esquece" o mapeamento entre seu endereço interno e número da porta de origem e seu efêmero endereço externo e número de porta.
Quando mais tarde você tentar fazer alguma coisa nessa janela ssh, um novo endereço efêmero / par de portas é atribuído a você, o qual o servidor ssh de destino não tem conhecimento e não responde; mais tarde, algum tempo limite local é atingido e a conexão é interrompida pela sua máquina local.
A solução prática para isso é fazer exatamente o que yuriismaster sugere: ativar KeepAlives (que garante tráfego regular para "fazer cócegas" na entrada da tabela de estado) e usar screen
no lado remoto (para preservar o estado no caso de coisas cair fora). Eu só posto esta resposta porque você perguntou o que está acontecendo, bem como o que fazer sobre isso. Espero que isso esclareça por que as sugestões de Yuriismaster são boas.