packet_write_wait Зламана труба навіть залишаючи верхній пробіг?


26

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

Ну, після того, як я успішно пройшов автентифікацію на SSH, зробив декілька матеріалів, то моє SSH-з'єднання несподівано перестало !!?

Ось моє повідомлення про помилку: packet_write_wait: Connection to XXX.XX.XX.XXX: Broken pipe

Я хотів, щоб моє повідомлення про помилку виглядало так: Write Failed: broken pipeбагато, повірте!

Я спробував тонну роздільну здатність в Інтернеті, як-от додав ServerAliveInterval, ServerAliveCountMax, ClientAlive ....

Хтось сказав: Поверніть свій TCPKeepAlive ні, додав ServerAlive бла-бла-ідіот. Я це теж зробив, але все-таки помилка.

Немає мені удачі до цього моменту.

Будь-яка допомога буде вдячна.


2
Якщо ви перебуваєте у корпоративному середовищі, зверніться до адміністраторів брандмауера та перевірте, чи вони оновлювали правила та / або перезапускали брандмауер після певних змін, коли це відбувається. Якщо це відбувається з вашим особистим сервером, вам потрібно надати більше інформації про те, що ви робили на стороні сервера sshd, коли це сталося. Broken pipeзагалом означає, що з якоїсь причини відбулося відключення мережі.
Мельбурслан

Я просто переїхав, і це відбувається постійно з моїм новим зв’язком. Cox Cable - це мій Інтернет-провайдер, і у мене є кабельний модем Netgear C6300BD, який працює з налаштуваннями за замовчуванням. Це бувало в моєму старому місці, і я ніколи не міг його вирішити. Це тривало місяцями і врешті-решт припинилось. Я забув, яким нещасним і нерозв’язним було це до сьогодні.
Т. Брайан Джонс

Я відчуваю твій біль. Я приїхав сюди в крайньому випадку, перш ніж збиратись розбити весь свій апарат на крихітні шматочки. Хіба це не повинен бути досить простим протоколом?
DerpyNerd

У мене виникла така ж помилка у віртуалізованому Linux. Проблема була вирішена із зміною адаптера Ethernet на мостове
Abel Barrios

Відповіді:


8

Шановні читачі 2018 року та пізніші,

Дозвольте показати вам коментар Мельбурслана,

Якщо ви перебуваєте у корпоративному середовищі, зверніться до адміністраторів брандмауера та перевірте, чи вони оновлювали правила та / або перезавантажували брандмауер після певних змін, коли це відбувається. Якщо це відбувається з вашим особистим сервером, вам потрібно надати більше інформації про те, що ви робили на стороні сервера sshd, коли це сталося. Зламана труба, як правило, означає, що з якоїсь причини відбулося відключення мережі.

Отже, якщо ви намагаєтеся використовувати ssh username@0.0.0.0VPN (корпоративне середовище). Тоді ця помилка повинна бути з вами знову і знову.

Єдине рішення, яке я знайшов поки що - це мобільна оболонка . Дякую, хто її створив.

Вам потрібно буде встановити mosh-serverу вашій цілі (сервер, на який ви хочете ssh'ed) та mosh-clientу свій хост-апарат.

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

Щасливого ssh'ing!


3

Я виявив, що це проблема з IPQoS у моїй налаштуваннях VMware Guest. У VM я встановлюю значення ~ / .ssh / config для IPQoS за замовчуванням "IPQoS af21 cs1", будучи даними низької затримки для інтерактивного першого та нижчого зусилля для неінтерактивного другого. Встановлення нового значення для af21 було моїм рішенням:

Host *
     IPQoS throughput

Працював для мене, інакше так, MoSH також працює, але mosh не обробляє мою настройку проксі зручним способом, тому я дотримуюся команд ProxyJump в


Приємно, що працює в командному рядку (як ви пояснюєте у своєму дописі на ubuntu), але не у файлі конфігурації 8-D
aurelien

1

По-перше, переконайтеся, що ваше питання не пов’язане з цим .

Якщо ні, і проблема все ще існує, читайте далі.

Я також відчував цю проблему і кілька днів намагався її усунути.

Як зазначено, гра з параметрами SSH KeepAlive або параметрами TCP ядра (включення / вимкнення TCPKeepAlive) не вирішує проблему.

Після гри з usb до драйверів Ethernet і дампами TCP, я зрозумів, що проблема пов’язана з ядром 4.8. Я переключив джерело (надіслав сторону) на 4,4 LTS, і проблема зникла (rsync, scp знову добре працювали). Сторона призначення може залишитися на 4,8, якщо ви хочете, в моєму випадку використання це спрацювало (перевірено).

Щодо технічної сторони, ми можемо дещо звузити цю проблему завдяки відвалу проводів, який я зробив нижче. Ми можемо бачити, як канал TCP протоколу SSHv2 скидається (прапор RST TCP встановлений на 1), що призводить до припинення з’єднання. Я ще не знаю причини RST. Мені потрібно зробити деяку бісекцію з 4.8.1 до 4.8.11 для цього.введіть тут опис зображення

Я не кажу, що ваша проблема пов'язана саме з ядром 4.8, але wrt. в день, коли ви опублікували своє запитання / повідомлення, можливо, ви використовували версію ядра, яка насправді була помилкою.

Відповіли спочатку на StackOverflow .


Ядро не проблема, тому що я весь час використовував 4.4 LTS. Справжню проблему тут відповів @MelBursan у коментарі питання. Моє підключення до Інтернету за допомогою VPN, саме тому. Рішення: mosh.org
Toan Nguyen

@ToanNguyen Добре. Таким чином, чи можете ви, будь ласка, поставити його / її коментар як відповідь на ваше запитання та позначити його як виправлене? :-) Якщо ви знайшли технічні причини, чому вам потрібен мош, додайте їх також :-). З моєї сторони, у мене також є VPN-з'єднання, і вони працювали бездоганно, без маху.
wget

Я повертаюся до цього. Проблема була не через помилку ядра, а через помилку драйвера, особливо частину, присвячену завантаженню апаратної контрольної суми. Дивіться цю тему для отримання додаткової інформації .
wget

Чи вирішує це ваша проблема?
Тоан Нгуен

@ToanNguyen Насправді в останній раз, коли у мене виникла ця проблема, я просто знизив ядро ​​і воно знову працювало. Тепер я просто відключила завантаження контрольної суми hw, нічого не знижуючи, і це вирішило питання, так.
wget

1

ssh -o IPQoS=throughput user@{ip}


Немає ознак того, що користувач використовує macOS або що він намагається увійти як root.
Kusalananda

Ви є, правда! Однак я перевірив команду з користувачем, відмінним від 'root' та у Windows. Ще працює!
vicky penkova

0

Відкрийте файл ssh.config на цільовому сервері за допомогою команди нижче:

sudo nano /etc/ssh/ssh.config

Додайте рядки нижче в кінці цього файлу

ClientAliveInterval 300

ClientAliveCountMax 2

натисніть Ctrl + o і введіть.

перезавантаження судо

Це гостро спрацювало для мене. Я опинився в тій же ситуації. Спробував це і те, але просто виконайте ці кроки. Тільки в цьому. Я сподіваюсь, що це буде працювати і для вас.

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