วิธีการป้องกันไม่ให้เกิดการติดค้างอัตโนมัติเป็นครั้งคราว?


12

ฉันใช้autosshเพื่อสร้างอุโมงค์ย้อนกลับ ssh แต่บางครั้งอุโมงค์หยุดทำงานและฉันต้องฆ่า autossh และเริ่มต้นอีกครั้ง

/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:intranet.example.com:3269 public.example.com &

autossh ดูเหมือนจะยังคงอยู่ในสถานะแปลกที่พอร์ตที่ฟอร์เวิร์ดยังคงเปิดอยู่ แต่คุณไม่ได้รับการตอบกลับจากอีกฝั่ง เมื่อรีสตาร์ท autossh สิ่งนี้จะได้รับการแก้ไข

ฉันจะป้องกันไม่ให้ปัญหานี้เกิดขึ้นได้อย่างไร

คำตอบ:


6

ใช้ServerAliveInterval(โดยมีค่าเป็นวินาที) ทำให้ssh ไคลเอ็นต์ส่งแพ็กเก็ต null (keepalive) ผ่านแชนเนลที่เข้ารหัสทุก ๆ ครั้งเพื่อตรวจจับการเชื่อมต่อที่ขาด

/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:intranet.example.com:3269 -o ServerAliveInterval=30 public.example.com &

คุณควรตั้งค่าที่สอดคล้องกันClientAliveIntervalในเซิร์ฟเวอร์/etc/ssh/sshd_configของคุณเพื่อให้เซิร์ฟเวอร์เชื่อมต่อไคลเอนต์ที่ไม่ทำงานเช่นกัน:

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