การติดตามผล:ดูเหมือนว่าชุดการตัดการเชื่อมต่ออย่างรวดเร็วที่เกิดขึ้นพร้อมกับการใช้งานเซิร์ฟเวอร์เพียงไม่กี่เดือนนั้นอาจเป็นเรื่องบังเอิญและเพิ่งจะเปิดเผยปัญหาที่แท้จริง เหตุผลที่ไม่สามารถเชื่อมต่อใหม่ได้เกือบจะแน่นอนเนื่องจากค่า AliveInterval (คำตอบของ kasperd) การใช้ตัวเลือก ExitOnForwardFailure ควรอนุญาตให้การหมดเวลาเกิดขึ้นอย่างถูกต้องก่อนทำการเชื่อมต่ออีกครั้งซึ่งควรแก้ปัญหาในกรณีส่วนใหญ่ คำแนะนำของ MadHatter (สคริปต์การฆ่า) น่าจะเป็นวิธีที่ดีที่สุดเพื่อให้แน่ใจว่าอุโมงค์สามารถเชื่อมต่อได้แม้ว่าทุกอย่างจะล้มเหลว
ฉันมีเซิร์ฟเวอร์ (A) อยู่หลังไฟร์วอลล์ที่เริ่มต้นช่องสัญญาณย้อนกลับในหลายพอร์ตไปยัง DigitalOcean VPS (B) ขนาดเล็กเพื่อให้ฉันสามารถเชื่อมต่อกับ A ผ่านทางที่อยู่ IP ของ B อุโมงค์ทำงานอย่างต่อเนื่องเป็นเวลาประมาณ 3 เดือน แต่ก็ล้มเหลวทันทีสี่ครั้งใน 24 ชั่วโมงที่ผ่านมา สิ่งเดียวกันเกิดขึ้นชั่วขณะหนึ่งกลับไปที่ผู้ให้บริการ VPS รายอื่น - ใช้งานได้หลายเดือนจากนั้นก็ล้มเหลวอย่างรวดเร็วหลายครั้ง
ฉันมีสคริปต์บนเครื่องที่จะรันคำสั่งอุโมงค์ ( ssh -R *:X:localhost:X address_of_B
สำหรับพอร์ตแต่ละ X) Warning: remote port forwarding failed for listen port X
แต่เมื่อมันรันก็กล่าวว่า
การเข้าไปที่ sshd /var/log/secure
บนเซิร์ฟเวอร์จะแสดงข้อผิดพลาดเหล่านี้:
bind: Address already in use
error: bind: Address already in use
error: channel_setup_fwd_listener: cannot listen to port: X
การแก้ปัญหาต้องเริ่มต้น VPS ใหม่ จนกว่าจะถึงตอนนั้นความพยายามในการเชื่อมต่อทั้งหมดจะให้ข้อความ "การส่งต่อพอร์ตระยะไกลล้มเหลว" และจะไม่ทำงาน ตอนนี้มาถึงจุดที่อุโมงค์ใช้เวลาประมาณ 4 ชั่วโมงก่อนหยุด
ไม่มีการเปลี่ยนแปลงอะไรใน VPS และเป็นเครื่องผู้ใช้แบบใช้ครั้งเดียวที่ทำหน้าที่เป็นจุดสิ้นสุดอุโมงค์ย้อนกลับเท่านั้น กำลังใช้งาน OpenSSH_5.3p1 บน CentOS 6.5 ดูเหมือนว่า sshd จะไม่ปิดพอร์ตที่ส่วนท้ายเมื่อการเชื่อมต่อขาดหายไป ฉันกำลังสูญเสียที่จะอธิบายว่าทำไมหรือทำไมมันจะเกิดขึ้นทันทีหลังจากเดือนของการดำเนินงานเกือบสมบูรณ์แบบ
ในการชี้แจงฉันต้องคิดก่อนว่าทำไม sshd ปฏิเสธที่จะฟังพอร์ตหลังจากที่อุโมงค์ล้มเหลวซึ่งดูเหมือนว่าเกิดจาก sshd เปิดพอร์ตทิ้งไว้และไม่เคยปิดพอร์ตเลย นั่นน่าจะเป็นปัญหาหลัก ฉันไม่แน่ใจว่าสิ่งใดที่จะทำให้เกิดพฤติกรรมนี้หลังจากผ่านไปหลายเดือนตามที่ฉันคาดหวัง (เช่นปิดพอร์ตทันทีและอนุญาตให้สคริปต์เชื่อมต่อใหม่)