SSH-з'єднання заморожуються за допомогою "Написати помилку: Несправна труба"


12

Я підключаюсь до коробки CentOS 5.5 через SSH від машини Ubuntu 11.04.

Здається, з'єднання спрацьовує так, як очікувалося, коли воно перебуває в активному використанні (тобто немає відставання або втрати), але якщо воно залишається неактивним на деякий час, воно замерзне і стане невідповідним. Врешті-решт повідомлення про помилку "Написати помилку: Зламана труба" буде повернуто, і я повернусь до запиту своєї локальної машини.

Які речі я можу зробити, щоб допомогти налагодити це, дізнатися, що відбувається, і вирішити це? Будучи розробником, це заподіює моєму життю біль, що потребує постійного підключення.

Відповіді:


15

Схоже, що SSHD-конфігурація вікна CentOS не налаштована для клієнта KeepAlive.

Опустіть ці два рядки у свій конфігурацію CentOS sshd (/ etc / ssh / sshd_config), перезапустіть його та насолоджуйтесь!

KeepAlive yes
ClientAliveInterval 60

Поки ви на цьому, я рекомендую використовувати gnu, screenщоб підтримувати сеанс живим на стороні CentOS.


1
KeepAlive як перейменовано на TCPKeepAlive, і його можна залишити за типовим значенням, яке так. ClientAliveInterval має бути достатнім. Див man sshd_config.
ypid

9

Справжня відповідь майже завжди полягає в тому, що у вас є шлях NAT-пристрою певного типу, як правило, брандмауер, у таблицях стану якого досить агресивний тайм-аут. Оскільки ви залишаєте своє ssh з'єднання неактивним протягом певного періоду часу, пристрій NAT "забуває" відображення між вашою внутрішньою адресою та номером вихідного порту та вашим ефемером за межами NATted адреси та номера порту.

Коли ви пізніше спробуєте зробити щось у цьому ssh-вікні, вам призначається нова ефемерна адреса / пара порту, про яку цільовий ssh-сервер не знає і не відповідає; пізніше буде досягнуто деякого локального тайм-ауту, і з'єднання припиниться вашою локальною машиною.

Практичне виправлення цього полягає в тому, щоб зробити саме те, що пропонує yuriismaster: увімкнути KeepAlives (що забезпечує регулярний трафік, щоб "тикнути" цей запис у державній таблиці), і використовувати screenна віддаленій стороні (щоб зберегти стан у випадку, якщо речі не впадуть). Я публікую цю відповідь лише тому, що ви запитали, що відбувається, а також що з цим робити. Сподіваємось, це пояснює, чому пропозиції юрісмістера хороші.


Це має ідеальний сенс! У нас є налаштування NAT із DMZ для цього вікна. Я спробую налаштувати тайм-аут і побачити, чи працює це на мене. Дякую :)
Stephen RC

Я приймаю вашу, як ви допомогли мені зрозуміти причини проблеми. Але кредит потрібно перейти до @yuriismaster для виправлення.
Stephen RC

Валорін: абсолютно так, і він був першим. Чесно кажучи, я думаю, що він заслуговує на прийняття більше, ніж я; але це ваше питання, тому воно повинно проходити так, як ви вважаєте за потрібне. Дякуємо за відгуки в будь-якому випадку.
MadHatter
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.