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 bllah blah idiot ฉันทำอย่างนั้น แต่ก็ยังมีข้อผิดพลาดเดียวกัน

ไม่มีโชคสำหรับฉันจนกระทั่งช่วงเวลานี้

ความช่วยเหลือใด ๆ จะได้รับการชื่นชม


2
หากคุณอยู่ในสภาพแวดล้อมขององค์กรให้ตรวจสอบกับผู้ดูแลระบบไฟร์วอลล์ของคุณและดูว่าพวกเขากำลังปรับปรุงกฎและ / หรือเริ่มไฟร์วอลล์ใหม่หลังจากการเปลี่ยนแปลงบางอย่างเมื่อเกิดเหตุการณ์นี้ขึ้น หากเกิดขึ้นกับเซิร์ฟเวอร์ส่วนบุคคลของคุณคุณต้องให้ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่คุณทำในฝั่งเซิร์ฟเวอร์ sshd เมื่อสิ่งนี้เกิดขึ้น Broken pipeโดยทั่วไปหมายถึงมีการตัดการเชื่อมต่อเครือข่ายด้วยเหตุผลบางประการ
MelBurslan

ฉันเพิ่งย้ายและสิ่งนี้เกิดขึ้นอย่างต่อเนื่องกับการเชื่อมต่อใหม่ของฉัน Cox Cable เป็น ISP ของฉันและฉันได้รับเคเบิลโมเด็ม Netgear C6300BD ที่ทำงานในการตั้งค่าเริ่มต้นจากการติดตั้ง สิ่งนี้เคยเกิดขึ้นในสถานที่เก่าของฉันและฉันไม่สามารถแก้ไขได้ มันกินเวลานานหลายเดือนและในที่สุดก็หยุดเกิดขึ้น ฉันลืมว่ามันช่างน่าสังเวชและแก้ไม่ได้จนกระทั่งวันนี้
T. Brian Jones

ฉันรู้สึกถึงความเจ็บปวดของคุณ. ฉันมาที่นี่เป็นทางเลือกสุดท้ายก่อนที่ฉันจะตบฮาร์ดแวร์ทั้งหมดของฉันเป็นชิ้นเล็ก นี่ไม่ควรเป็นโปรโตคอลที่ค่อนข้างง่ายใช่มั้ย
DerpyNerd

ฉันมีข้อผิดพลาดเดียวกันบน Virtualized Linux ปัญหาแก้ไขการเปลี่ยนอะแดปเตอร์อีเธอร์เน็ตเป็นบริดจ์
Abel Barrios

คำตอบ:


8

เรียนผู้อ่านทุกท่านในปี 2018 และหลังจากนั้น

ให้ฉันแสดงความคิดเห็นจาก MelBurslan

หากคุณอยู่ในสภาพแวดล้อมขององค์กรให้ตรวจสอบกับผู้ดูแลระบบไฟร์วอลล์ของคุณและดูว่าพวกเขากำลังปรับปรุงกฎและ / หรือเริ่มไฟร์วอลล์ใหม่หลังจากการเปลี่ยนแปลงบางอย่างเมื่อเกิดเหตุการณ์นี้ขึ้น หากเกิดขึ้นกับเซิร์ฟเวอร์ส่วนบุคคลของคุณคุณต้องให้ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่คุณทำในฝั่งเซิร์ฟเวอร์ sshd เมื่อสิ่งนี้เกิดขึ้น โดยทั่วไปแล้วท่อแตกหมายความว่ามีการตัดการเชื่อมต่อเครือข่ายด้วยเหตุผลบางประการ

ดังนั้นโดยทั่วไปหากคุณพยายามใช้งานssh username@0.0.0.0ผ่าน VPN (สภาพแวดล้อมขององค์กร) จากนั้นข้อผิดพลาดนี้จะต้องอยู่ที่นั่นกับคุณซ้ำแล้วซ้ำอีก

ทางออกเดียวที่ฉันพบเพื่อให้ห่างไกลมือถือเปลือก ขอบคุณที่สร้างมันขึ้นมา

คุณจะต้องติดตั้งmosh-serverในเป้าหมายของคุณ (เซิร์ฟเวอร์ที่คุณต้องการใช้) และmosh-clientในเครื่องโฮสต์ของคุณ

มันจะเชื่อมต่อใหม่โดยอัตโนมัติเมื่อแพ็กเก็ตของคุณหายไปซึ่งค่อนข้างเจ๋งและเหมาะสมกับความต้องการของเราทุกอย่าง

ขอให้มีความสุข!


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 ไปยังอีเธอร์เน็ตและการถ่ายโอนข้อมูล TCP ฉันรู้ว่าปัญหาเกิดจากเคอร์เนล 4.8 ฉันเปลี่ยนแหล่งที่มา (ด้านการส่ง) เป็น 4.4 LTS และปัญหาหายไป (rsync, scp ทำงานได้ดีอีกครั้ง) ด้านปลายทางสามารถอยู่ที่ 4.8 หากคุณต้องการในกรณีที่ใช้งานของฉันนี่คือการทำงาน (ทดสอบ)

ในด้านเทคนิคเราสามารถ จำกัด ปัญหาได้เล็กน้อยเนื่องจากการถ่ายโอนข้อมูล wireshark ด้านล่างที่ฉันทำ เราสามารถเห็นช่องสัญญาณ TCP ของโปรโตคอล SSHv2 กำลังถูกรีเซ็ต (ตั้งค่าสถานะ RST ของ TCP เป็น 1) ทำให้การเชื่อมต่อยกเลิก ฉันยังไม่ทราบสาเหตุของการ RST ฉันต้องทำการแบ่งออกเป็นสองส่วนจาก 4.8.1 ถึง 4.8.11 สำหรับสิ่งนั้นป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่ได้บอกว่าปัญหาของคุณเกิดจากเคอร์เนล 4.8 แต่โดยเฉพาะ วันที่คุณโพสต์คำถาม / ข้อความของคุณคุณอาจใช้รุ่นเคอร์เนลซึ่งเป็นรถจริงๆ

ตอบครั้งแรกในStackOverflow


เคอร์เนลไม่ใช่ปัญหาเพราะฉันใช้ 4.4 LTS ตลอดเวลา ปัญหาจริงที่นี่ตอบโดย @MelBursan ในความคิดเห็นของคำถาม การเชื่อมต่ออินเทอร์เน็ตของฉันโดยใช้ VPN นั่นคือเหตุผล การแก้ไข: mosh.org
Toan Nguyen

@ToanNguyen ตกลง ด้วยวิธีนี้คุณช่วยกรุณาใส่ความคิดเห็นของเขา / เธอเป็นคำตอบสำหรับคำถามของคุณและทำเครื่องหมายว่าแก้ไขแล้วได้หรือไม่? :-) หากคุณพบเหตุผลทางเทคนิคว่าทำไมคุณถึงต้องการ mosh โปรดเพิ่มเข้าไปด้วย :-) ในด้านของฉันฉันมีการเชื่อมต่อ VPN เช่นกันและสิ่งเหล่านี้ทำงานได้อย่างไร้ที่ติโดยไม่ต้อง mosh
wget

ฉันจะกลับมาที่นี่ ปัญหาไม่ได้เกิดจากเคอร์เนล buggy แต่เป็นไดร์เวอร์ buggy โดยเฉพาะส่วนที่ทุ่มเทให้กับการถ่ายโอนข้อมูลการตรวจสอบฮาร์ดแวร์ ดูหัวข้อนี้สำหรับข้อมูลเพิ่มเติม
wget

มันแก้ปัญหาของคุณหรือไม่
Toan Nguyen

@ ToanNguyen ที่จริงครั้งสุดท้ายที่ฉันมีปัญหานี้ฉันเพียงแค่ลดระดับเคอร์เนลและมันก็ทำงานอีกครั้ง ตอนนี้ฉันเพียงแค่ปิดการใช้งานการถ่ายโอนข้อมูลการตรวจสอบ hw โดยไม่ต้องลดระดับสิ่งใดและแก้ไขปัญหาใช่
wget

1

ssh -o IPQoS=throughput user@{ip}


ไม่มีข้อบ่งชี้ว่าผู้ใช้ใช้ macOS หรือกำลังพยายามลงชื่อเข้าใช้ในฐานะรูท
Kusalananda

ของคุณถูกต้อง! อย่างไรก็ตามฉันทดสอบคำสั่งกับผู้ใช้ที่แตกต่างจาก 'รูท' และบนหน้าต่าง ยังใช้งานได้!
vicky penkova

0

เปิดไฟล์ ssh.config บนเซิร์ฟเวอร์เป้าหมายด้วยคำสั่งด้านล่าง:

sudo nano /etc/ssh/ssh.config

เพิ่มบรรทัดด้านล่างที่ท้ายไฟล์นั้น

ClientAliveInterval 300

ClientAliveCountMax 2

กด Ctrl + o แล้วป้อน

sudo รีบูต

มันทำงานได้ดีสำหรับฉัน ฉันอยู่ในสถานการณ์เดียวกัน พยายามทำอย่างนี้ แต่เพียงทำตามขั้นตอนเหล่านี้ แค่นี้. ฉันหวังว่ามันจะใช้ได้ผลสำหรับคุณเช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.