Linux SSH หมดเวลา [ปิด]


10

ฉันได้รับการดิ้นรนกับระบบคู่หมดเวลาหลังจากที่ไม่มีการใช้งาน X นาทีและไม่แน่ใจว่าจะแก้ไขได้อย่างไร

ฉันมีกล่อง CentOS ที่สำนักงานของฉัน เชื่อมต่อกับ SSH ไม่สามารถสัมผัสเป็นเวลา 2 ชั่วโมงและยังคงอยู่เมื่อฉันใช้งาน

อย่างไรก็ตามเชื่อมต่อกับกล่องเดียวกันที่บ้านและบางครั้งจะหมดเวลาหลังจากสองสามวินาทีบางครั้งหลังจากสองสามนาที

ฉันคิดว่ามันคือการเชื่อมต่ออินเทอร์เน็ตของฉัน แต่ถ้าฉันใช้งานกล่องมันจะยังคงเชื่อมต่ออยู่

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

อะไรที่ฉันสามารถตรวจสอบเพื่อดูว่าเกิดอะไรขึ้น?


4
เอกสารประกอบสำหรับไคลเอนต์ (ไม่มีชื่อ) ของคุณ
user9517

คำตอบ:


14

สิ่งแรกที่คุณควรพิจารณาคือการตั้งค่า ServerAliveInterval ควรตั้งค่านี้บนเวิร์กสเตชันของคุณ

บนไคลเอนต์ Linux หรือ OSX คุณสามารถสร้างไฟล์กำหนดค่าสำหรับผู้ใช้ของคุณภายใต้ ~ / .ssh / config บนเวิร์กสเตชันของคุณ เพิ่มคำสั่งต่อไปนี้ ในกรณีของฉันฉันต้องการให้มีผลกับโฮสต์ทั้งหมดดังนั้นฉันจึงวางไว้ใต้ Host *

Host *
    ServerAliveInterval 60

นี่จะส่งคำสั่ง noop ทุก ๆ 60 วินาทีเพื่อให้การเชื่อมต่อเปิดอยู่ คุณอาจต้องการปรับแต่งค่าเพื่อตอบสนองความต้องการของคุณ

บนฝั่งเซิร์ฟเวอร์ตรวจสอบให้แน่ใจว่า TCPKeepAlive ตั้งค่าเป็นใช่

grep TCPKeepAlive /etc/ssh/sshd_config
TCPKeepAlive yes

หากคุณใช้ Windows คุณจะต้องอ้างอิงเอกสารสำหรับลูกค้าของคุณ


11

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

อย่างไรก็ตามหากมีกล่องรับสัญญาณกลางใด ๆ (NAT, ไฟร์วอลล์และอื่น ๆ ) ที่มีแนวโน้มว่าจะหมดเวลาการเชื่อมต่อที่ไม่ได้ใช้งาน ผลที่ได้คือแม้ว่าการเชื่อมต่อจะมีชีวิตอยู่ที่ปลายทั้งสองจุดปลายทั้งสองไม่สามารถสื่อสารได้อีกต่อไปเพราะมิดชิดปฏิเสธที่จะส่งต่อแพ็กเก็ตใด ๆ จนกว่าไคลเอ็นต์ SSH จะเปิดการเชื่อมต่อใหม่

ถ้าคุณรู้ว่าหมดเวลาของมิดเดิลแวร์คุณสามารถแก้ไขปัญหาได้โดยการกำหนดค่าClientAliveIntervalใน/etc/ssh/sshd_configเซิร์ฟเวอร์หรือServerAliveIntervalใน~/.ssh/configไคลเอนต์ สำหรับการตรวจจับการเชื่อมต่อที่ดีที่สุดจะแนะนำให้เปิดใช้งานการตั้งค่าทั้งสอง นี่จะตรวจจับการเชื่อมต่อที่ใช้งานไม่ได้เมื่อปลายทางถูกรีบูทหรือได้รับที่อยู่ IP ใหม่

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

หากปรากฎว่าความล้มเหลวเกิดขึ้นจาก ISP ของคุณทำบางสิ่งบางอย่างที่ไม่ดีเช่นการเชื่อมต่อโหลดบาลานซ์ผ่าน CGN หลายตัวที่ไม่ได้แชร์สถานะการเชื่อมต่อคุณไม่สามารถแก้ไขปัญหาด้วยตนเองโดยเพียงแค่ปรับแต่ง SSH ของคุณ

หากคุณบังเอิญติดกับ ISP ที่มี CGN ที่ไม่น่าเชื่อถือซึ่งพวกเขาปฏิเสธที่จะแก้ไขตัวเลือกเดียวที่เหลือที่ฉันรู้คือการอัพเกรดทั้งไคลเอนต์และเซิร์ฟเวอร์ให้เป็นเคอร์เนลเวอร์ชันด้วยการสนับสนุน MPTCP หรือใช้โซลูชันทันเนล การเปลี่ยนแปลงในการแม็พพอร์ตบน NAT

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