Ich verbinde mich mit einer CentOS 5.5-Box über SSH von einem Ubuntu 11.04-Computer.
Die Verbindung scheint erwartungsgemäß zu funktionieren, wenn sie aktiv verwendet wird (dh keine Verzögerung oder kein Verlust). Wenn sie jedoch für eine Weile inaktiv bleibt, friert sie ein und reagiert nicht mehr. Eventuell wird die Fehlermeldung "Write failed: Broken pipe" zurückgegeben und ich bin wieder auf der Eingabeaufforderung meines lokalen Rechners.
Was kann ich tun, um dieses Problem zu beheben, um herauszufinden, was gerade passiert, und um es zu lösen? Als Entwickler bedeutet dies, dass ich in meinem Leben ständig neue Kontakte knüpfen muss.
man sshd_config
.Die eigentliche Antwort lautet fast immer, dass sich im Pfad ein NAT-Gerät befindet, normalerweise eine Firewall, deren Statustabellen eine ziemlich aggressive Zeitüberschreitung aufweisen. Da Sie Ihre ssh-Verbindung für einige Zeit im Leerlauf lassen, "vergisst" das NAT-Gerät die Zuordnung zwischen Ihrer internen Adresse und der Quellportnummer und Ihrer kurzlebigen Adresse und Portnummer außerhalb von NAT.
Wenn Sie später versuchen, etwas in diesem SSH-Fenster zu tun, wird Ihnen ein neues kurzlebiges Adress- / Port-Paar zugewiesen, das der Ziel-SSH-Server nicht kennt und auf das er nicht reagiert. Später wird eine lokale Zeitüberschreitung erreicht, und die Verbindung wird von Ihrem lokalen Computer getrennt.
Die praktische Lösung hierfür besteht darin, genau das zu tun, was yuriismaster vorschlägt: KeepAlives aktivieren (wodurch sichergestellt wird, dass der reguläre Datenverkehr diesen Statustabelleneintrag "kitzelt") und
screen
auf der Remote-Seite verwenden ( um den Status beizubehalten, falls etwas herunterfällt). Ich poste diese Antwort nur, weil Sie gefragt haben, was passiert und was Sie dagegen tun sollen. Hoffentlich wird klar, warum die Vorschläge von yuriismaster gut sind.quelle