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ć.

Stephen RC
źródło

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.

yuriismaster
źródło
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.

Szalony Kapelusznik
źródło
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