Połączenia SSH zamrażają się z komunikatem „Zapis nieudany: zepsuta rura”


12

Łączę się z urządzeniem CentOS 5.5 przez SSH z komputera Ubuntu 11.04.

Połączenie wydaje się działać zgodnie z oczekiwaniami, gdy jest aktywne (tj. Bez opóźnienia lub utraty), ale jeśli pozostanie nieaktywne przez chwilę, zawiesi się i przestanie odpowiadać. W końcu zostanie zwrócony komunikat o błędzie „Zapis nieudany: uszkodzona rura” i wrócę po monicie mojego komputera lokalnego.

Co mogę zrobić, aby pomóc w debugowaniu, dowiedzieć się, co się dzieje i rozwiązać ten problem? Będąc programistą, sprawia to, że moje życie staje się uciążliwe, gdy muszę się ciągle łączyć.

Odpowiedzi:


15

Wygląda na to, że konfiguracja SSHD skrzynki CentOS nie jest skonfigurowana do obsługi klienta KeepAlive.

Upuść te dwie linie w konfiguracji CentOS sshd (/ etc / ssh / sshd_config), uruchom ją ponownie i ciesz się!

KeepAlive yes
ClientAliveInterval 60

W tym momencie zalecam używanie GNU, screenaby utrzymać sesję przy życiu po stronie CentOS.


1
KeepAlive zmieniono nazwę na TCPKeepAlive i można pozostawić domyślną wartość, która brzmi „tak”. ClientAliveInterval powinno wystarczyć. Zobaczyć man sshd_config.
ypid

9

Właściwa odpowiedź brzmi prawie zawsze, że na ścieżce znajduje się jakieś urządzenie NAT, zwykle zapora ogniowa, której tabele stanów mają dość agresywny limit czasu. Ponieważ pozostawiasz połączenie ssh przez pewien czas bezczynne, urządzenie NAT „zapomina” mapowanie między twoim adresem wewnętrznym i numerem portu źródłowego a efemerycznym poza adresem NATted i numerem portu.

Kiedy później spróbujesz coś zrobić w tym oknie ssh, nowa efemeryczna para adres / port zostanie ci przypisana, o której docelowy serwer ssh nie ma wiedzy i na którą nie odpowiada; później osiągnięto pewien limit czasu lokalnego i połączenie zostanie zerwane przez komputer lokalny.

Praktycznym rozwiązaniem tego problemu jest zrobienie dokładnie tego, co sugeruje yuriismaster: włączenie KeepAlives (które zapewniają regularny ruch w celu „łaskotania” wpisu do tabeli stanów) i użycie screengo po stronie zdalnej (aby zachować stan na wypadek, gdyby rzeczy zostały upuszczone). Publikuję tę odpowiedź tylko dlatego, że zapytałeś, co się dzieje, a także co z tym zrobić. Mam nadzieję, że to wyjaśnia, dlaczego sugestie jurora są dobre.


To ma sens! Dla tej skrzynki mamy NAT z konfiguracją DMZ. Spróbuję skonfigurować limit czasu i sprawdzić, czy to działa dla mnie. Dzięki :)
Stephen RC

Akceptuję twoje, ponieważ pomogłeś mi zrozumieć przyczyny problemu. Ale kredyt należy udać się do @yuriismaster w celu naprawy.
Stephen RC

Valorin: absolutnie tak, a on był pierwszy. Szczerze mówiąc, myślę, że zasługuje na akceptację bardziej niż ja; ale to twoje pytanie, więc powinno pójść tak, jak uważasz. Dzięki za opinie, tak czy inaczej.
MadHatter
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.