Linux non esegue il timeout delle connessioni SSH inattive. È possibile lasciare una connessione SSH aperta a tempo indeterminato e finché nessuno degli endpoint è stato riavviato o ha ottenuto un nuovo indirizzo IP, la connessione funzionerà comunque quando si accede ad essa dopo un lungo periodo di inattività.
Tuttavia, se sono presenti middlebox con stato (NAT, firewall, ecc.), È probabile che si verifichino timeout delle connessioni inattive. Il risultato è che anche se la connessione è attiva ad entrambe le estremità, i due endpoint non possono più comunicare poiché la middlebox rifiuta di inoltrare i pacchetti fino a quando il client SSH non apre una nuova connessione.
Se si conosce il timeout del middlebox, è possibile aggirare il problema configurando ClientAliveInterval
in /etc/ssh/sshd_config
sul server o ServerAliveInterval
in ~/.ssh/config
sul client. Per un rilevamento ottimale delle connessioni interrotte, si consiglia di abilitare entrambe le impostazioni. Questo rileverà anche le connessioni interrotte quando uno dei due endpoint è stato riavviato o ha ottenuto un nuovo indirizzo IP.
Poiché si indica che il timeout a volte sembra essere basso come pochi secondi, questo potrebbe non essere sufficiente per risolvere il problema. Un timeout apparente molto basso può essere causato da un CGN sovraccarico o non configurato correttamente. È necessario ispezionare il traffico in vari punti del percorso di comunicazione per capire se un CGN è responsabile dei guasti.
Se si scopre che i guasti sono causati dall'ISP che fa qualcosa di stupido come il bilanciamento del carico delle connessioni su più CGN che non condividono lo stato della connessione, non è possibile risolvere il problema da soli semplicemente modificando la configurazione SSH.
Se vi capita di rimanere bloccati con un ISP con un CGN inaffidabile che si rifiutano di risolvere, le uniche opzioni rimaste che conosco sono l'aggiornamento di entrambe le versioni client e server alle versioni kernel con supporto MPTCP o l'uso di una soluzione tunnel progettata per tollerare spontanea modifiche nelle mappature delle porte sul NAT.