Connessioni SSH bloccate con "Scrittura fallita: tubo rotto"


12

Mi collego a un box CentOS 5.5 tramite SSH da una macchina Ubuntu 11.04.

La connessione sembra funzionare come previsto quando è in uso attivo (cioè nessun ritardo o perdita), ma se rimane inattiva per un po 'si bloccherà e non risponderà. Alla fine verrà restituito il messaggio di errore "Scrittura fallita: tubo rotto" e tornerò sul prompt del mio computer locale.

Che tipo di cose posso fare per aiutare il debug, scoprire cosa sta succedendo e risolverlo? Essendo uno sviluppatore, questo sta rendendo la mia vita un dolore dover riconnettersi costantemente.

Risposte:


15

Sembra che la configurazione SSHD del box CentOS non sia impostata per eseguire il client KeepAlive.

Rilascia queste due righe nella configurazione di CentOS sshd (/ etc / ssh / sshd_config), riavviala e divertitevi!

KeepAlive yes
ClientAliveInterval 60

Mentre ci sei, ti consiglio di usare gnu screenper mantenere viva la tua sessione sul lato CentOS.


1
KeepAlive è stato rinominato in TCPKeepAlive e può essere lasciato al valore predefinito che è sì. ClientAliveInterval dovrebbe essere sufficiente. Vedere man sshd_config.
ypid

9

La risposta effettiva è quasi sempre che hai un dispositivo NAT di qualche tipo nel percorso, di solito un firewall, le cui tabelle di stato hanno un timeout abbastanza aggressivo. Poiché la connessione ssh viene lasciata inattiva per alcuni periodi di tempo, il dispositivo NAT "dimentica" la mappatura tra l'indirizzo interno e il numero di porta di origine, e il tuo indirizzo NATted esterno e il numero di porta effimeri.

Quando in seguito provi a fare qualcosa in quella finestra ssh, ti viene assegnata una nuova coppia indirizzo / porta effimera, di cui il server ssh di destinazione non è a conoscenza e non risponde; in seguito viene raggiunto un timeout locale e la connessione viene interrotta dal computer locale.

La soluzione pratica per questo è fare esattamente ciò che yuriismaster suggerisce: abilitare KeepAlives (che garantisce il traffico regolare per "solleticare" la voce della tabella di stato) e utilizzarlo screensul lato remoto (per preservare lo stato nel caso in cui le cose vengano eliminate). Pubblico questa risposta solo perché mi hai chiesto cosa sta succedendo e cosa fare al riguardo. Spero che questo chiarisca perché i suggerimenti di yuriismaster sono buoni.


Questo ha perfettamente senso! Abbiamo un NAT con configurazione DMZ per questa scatola. Proverò la configurazione del timeout e vedrò se funziona per me. Grazie :)
Stephen RC,

Accetto il tuo perché mi hai aiutato a capire i motivi alla base del problema. Ma il credito deve andare su @yuriismaster per la correzione.
Stephen RC,

Valorin: assolutamente, lo fa, ed è stato il primo. Francamente, penso che meriti l'accettazione più di me; ma è la tua domanda, quindi dovrebbe andare come meglio credi. Grazie per il feedback, in entrambi i casi.
MadHatter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.