ป้องกัน SSH Connection Timing Out / Broken Pipe

บทช่วยสอนนี้นำเสนอวิธีแก้ปัญหาที่ดีมากหากคุณใช้การเชื่อมต่อ SSH และพบข้อผิดพลาด: SSH Connection Timing Out / Broken Pipe. พูดผิดก็ผิด. เป็นข้อความแจ้งว่าการเชื่อมต่อระหว่างคอมพิวเตอร์ของคุณและเซิร์ฟเวอร์ที่เชื่อมต่ออยู่ถูกปิด Putty หรือ Terminal.

ทั้งในฐานะผู้ใช้ Windows เช่นเดียวกับ Mac (ในช่วง 10 ปีที่ผ่านมา) ฉันใช้เวลาส่วนใหญ่ใน การเชื่อมต่อ SSH ไปยังเว็บเซิร์ฟเวอร์ เซิร์ฟเวอร์อีเมล คลาวด์ และแพ็คเกจสำรองข้อมูลอื่นๆ การกระจายที่ชื่นชอบของ Linux คือไม่ต้องสงสัย CentOS.

หนึ่งในสิ่งที่เครียดที่สุดที่จะทำ administratorii ของเซิร์ฟเวอร์คือ เพื่อขัดจังหวะการเชื่อมต่อ SSH. ทันใดนั้นในขณะที่ติดกระดุมในสีโป๊วหรือ Terminal (ส่วนใหญ่มักจะเป็นปัญหาการเชื่อมต่อในเครื่อง) หรือหลังจากเวลา "idle” - ช่วงเวลาที่ไม่โต้ตอบกับเซิร์ฟเวอร์ระยะไกลผ่านเซสชัน SSH

หากคุณกำลังใช้ Mac และใช้ยูทิลิตี้ Terminal สำหรับการเชื่อมต่อระยะไกลผ่าน SSH หลังจากไม่มีการใช้งานบางอย่าง คุณถูกตัดการเชื่อมต่อด้วยข้อความ:client_loop: send disconnect: Broken pipe”. ฉันให้วิธีแก้ปัญหาใน บทความที่นี่ซึ่งฉันบอกว่าสามารถเพิ่มได้ใน "/etc/ssh/ssh_config" เส้น:

Host *
ServerAliveInterval 120

โซลูชันข้างต้นใช้ได้สำหรับผู้ใช้ Macและตรงไปตรงมาเพื่อเป็นการอัปเดตล่าสุดของ macOS ฉันไม่เก็บการเปลี่ยนแปลงที่เกิดขึ้นในไฟล์หลังจากรีสตาร์ทssh_config"และปัญหาในการยกเลิกการเชื่อมต่อเซสชันที่ไม่ได้ใช้งานจะส่งกลับ

วิธีแก้ปัญหาที่เราสามารถป้องกันการตัดการเชื่อมต่อของเซสชัน SSH ในระยะทางที่กำหนดโดย Terminal (macOS) หรือ ผงสำหรับอุดรู (Windows) เป็นเหมือนนอกจาก“ServerAliveInterval” จากคอมพิวเตอร์ของเราเพื่อกำหนดเซิร์ฟเวอร์ระยะไกลเพื่อสื่อสารกับแอปพลิเคชัน / ไคลเอนต์ SSH เป็นระยะ
นั่นเป็นเหตุผลที่เราต้องวางคำสั่ง "ClientAliveInterval"ใน"sshd_config” บนเซิร์ฟเวอร์ที่เรากำลังเชื่อมต่อ

ป้องกัน SSH Connection Timing Out / Broken Pipe (ssh_config เคล็ดลับ)

1. เราเชื่อมต่อกับเซิร์ฟเวอร์ที่เราต้องการเปิดใช้งานและกำหนดช่วงเวลาสำหรับ "ClientAliveInternal". เปิด SSH in Putty, Terminal หรือยูทิลิตี้อื่นที่คล้ายกันและเราตรวจสอบกับผู้ใช้ root.

ssh root@server.hostname

2. ดำเนินการบรรทัดคำสั่งเพื่อค้นหาในไฟล์ "sshd_config" ถ้า "ClientAliveInterval” ใช้งานอยู่และช่วงเวลาที่ตั้งไว้คือเท่าใด

sudo grep "ClientAliveInterval" /etc/ssh/sshd_config

ในสถานการณ์ของเรา "ClientAliveInterval” ถูกปิดใช้งานและค่าช่วงเวลาเป็นศูนย์

[root@buffy ~]# sudo grep "ClientAliveInterval" /etc/ssh/sshd_config
#ClientAliveInterval 0
[root@buffy ~]# 

แฮชแท็ก "#"วางไว้หน้าบรรทัดยกเลิกมัน เธอไม่ได้ใช้งาน

3. เราเปิดด้วยตัวแก้ไข "nano"หรือ"vim"ไฟล์"sshd_config". ฉันชอบ "nano"

sudo nano /etc/ssh/sshd_config

4. ลบ“#"หน้าเส้น"ClientAliveInterval” และกำหนดจำนวนวินาที: 60, 120 …

ClientAliveInterval 120
ClientAliveCountMax 10

5. บันทึกการเปลี่ยนแปลงและเริ่มบริการใหม่ "sshd"

sudo systemctl restart sshd

ClientAliveInterval : เป็นช่วงเวลาเป็นวินาทีที่เซิร์ฟเวอร์ส่งแพ็กเก็ตข้อมูลว่างไปยังไคลเอนต์ / แอปพลิเคชันที่เราเชื่อมต่อกับเซิร์ฟเวอร์ แนวปฏิบัตินี้จะช่วยให้การเชื่อมต่อมีชีวิตอยู่ / ใช้งานได้

ClientAliveCountMax : ไคลเอนต์ SSH ที่ไม่ตอบสนอง ใน 10 รอบ 120 วินาที (กำหนดโดย “ClientAliveInterval") การเชื่อมต่อจะถูกขัดจังหวะ นั่นคือหลังจาก 20 นาทีที่ลูกค้า SSH ไม่ตอบสนองต่อแพ็กเก็ต null ที่ส่งโดยเซิร์ฟเวอร์

ด้วยการเปลี่ยนแปลงการเชื่อมต่อเหล่านี้ SSH มันจะมีเสถียรภาพมากขึ้นและปลอดภัย

เป็นคนรักเทคโนโลยี ฉันเขียนบทความด้วยความสุขบน StealthSettings.com ตั้งแต่ปี 2006 ฉันมีประสบการณ์ที่หลากหลายในระบบปฏิบัติการ: macOS, Windows, และ Linux, รวมถึงภาษาโปรแกรมและแพลตฟอร์มบล็อก (WordPress) และสำหรับร้านค้าออนไลน์ (WooCommerce, Magento, PrestaShop)

วิธีการ » Linux » ป้องกัน SSH Connection Timing Out / Broken Pipe
แสดงความคิดเห็น