Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

แก้ไข: ssh_exchange_identification: read: connection reset by peer

ข้อผิดพลาด ssh_exchange_identification: read: Connection reset by peer พบได้น้อย แต่คุณอาจเจอหากพยายาม SSH เข้าเซิร์ฟเวอร์ Unix ใดๆ ไม่ว่าจะใช้ Windows + Cygwin เข้า Ubuntu, หรือ macOS + Terminal SSH เข้า Arch, Fedora, CentOS เนื่องจาก SSH เป็นมาตรฐานทั่ว Unix/Linux ข้อผิดพลาดนี้จึงอาจขึ้นได้ทุกครั้งที่เซิร์ฟเวอร์ระยะไกลรีเซ็ตการเชื่อมต่อโดยไม่ได้รับอนุญาตจากคุณ

วิธีที่ 1: ตรวจสอบไฟล์ hosts.deny

หากคุณมีสิทธิ์ผู้ดูแลระบบบนเซิร์ฟเวอร์และมีวิธีเข้าถึงโดยตรง วิธีง่ายที่สุดคือไปที่พรอมป์บนเครื่องเซิร์ฟเวอร์โดยตรง และตรวจสอบไฟล์ hosts.deny

พิมพ์
แก้ไข: ssh_exchange_identification: read: connection reset by peer บนเซิร์ฟเวอร์ เพื่อดูว่าเครื่องของคุณอยู่ในรายการแบนหรือไม่

แก้ไข: ssh_exchange_identification: read: connection reset by peer

หากอยู่ในรายการ นี่โดยทั่วไปเป็นข้อผิดพลาด สามารถลบออกได้อย่างปลอดภัย แล้วลอง SSH เข้าใหม่จากเครื่องอื่น มิฉะนั้น ให้ตรวจสอบว่าไม่มี wildcard แปลกๆ ที่ห้ามเครื่องคุณเชื่อมต่อ ไฟล์ที่เพิ่งสร้างใหม่พร้อมข้อความ default จาก distribution ของเซิร์ฟเวอร์โดยทั่วไปไม่ใช่สาเหตุ

แก้ไข: ssh_exchange_identification: read: connection reset by peer

ลอง
แก้ไข: ssh_exchange_identification: read: connection reset by peer หากต้องการเพิ่มการล็อกอินระยะไกลของคุณด้วยตนเองเพื่อให้แน่ใจว่าเชื่อมต่อได้ นี่จำเป็นน้อยมาก แต่หากเพิ่ม ให้ปฏิบัติตามข้อความแนะนำจาก distribution เช่น เพิ่มบรรทัดท้ายไฟล์ว่า ALL: appuals.com เพื่ออนุญาตให้ทุกคนบน appuals.com เข้าถึงเซิร์ฟเวอร์ได้ ตรวจสอบให้แน่ใจว่าพิมพ์โฮสต์ถูกต้อง แล้วกด Ctrl+O บันทึก และ Ctrl+X ออก

คุณควรสามารถ SSH เข้าเซิร์ฟเวอร์ได้แล้วในจุดนี้

วิธีที่ 2: เปลี่ยนตัวเลือกการตั้งค่า SSH (SSH Configuration Options)

หากเข้าถึงเซิร์ฟเวอร์ระยะไกลไม่ได้ หรือวิธีก่อนหน้าไม่ได้ผล ให้ล้างไฟล์ตั้งค่า SSH เก่าแล้วลองอีกครั้งหลังอัปเดต สมมติยังไม่ได้ ให้เพิ่มตัวเลือก -v ตอน SSH และลองเชื่อมต่อใหม่ หากยังเจอข้อผิดพลาด ให้ลองเพิ่ม -c aes256-ctr ในคำสั่ง SSH และดูว่าทำงานได้ไหม ควรทำให้ cipher list สั้นลง และช่วยให้เชื่อมต่อได้ เนื่องจากทำให้ packet size เล็กลง

บางผู้ใช้รายงานว่าวิธีนี้มีประโยชน์มากเมื่อ troubleshoot อุปกรณ์ Cisco บางรุ่น เพราะฮาร์ดแวร์เซิร์ฟเวอร์บางตัวคาดหวัง packet size เล็กเป็นค่า default เพียงแค่เพิ่ม -c aes256-ctr ในคำสั่ง SSH ปกติของคุณ ควรจะเข้าได้

วิธีที่ 3: ยกเลิกการแบน IP ผิดพลาด (Accidental IP Bans)

หากเคยพยายามล็อกอินหลายครั้งและถูกปฏิเสธ เซิร์ฟเวอร์ของคุณเองอาจเข้าใจผิดว่าเป็น IP ที่ทำร้าย ซึ่งมักเกิดจากการ retry การเชื่อมต่อขณะ troubleshoot ซึ่งเป็นการตอบสนองที่สมเหตุสมผล แต่อาจดูเหมือนโจมตีในมุมมองของ subroutine fail2ban เพื่อให้แน่ใจว่าไม่ใช่กรณีนี้ ให้รัน
sudo iptables -L --line-number
จากการเชื่อมต่อระยะไกล และหา IP address ของคุณ น่าจะพบการเชื่อมต่อที่ไม่เกี่ยวข้องหลายรายการที่สามารถละเลยได้

แก้ไข: ssh_exchange_identification: read: connection reset by peer

เมื่อเจอปัญหา ให้รัน iptables -D ตามด้วย chain และหมายเลข chain ที่เป็นปัญหา เพื่อป้องกันไม่ให้ถูกบล็อกโดยซอฟต์แวร์ของตัวเองอีก ควรไม่มีปัญหาต่อไป แต่หากยังมี

สามารถแก้ไขไฟล์ต่อไปนี้ได้
แก้ไข: ssh_exchange_identification: read: connection reset by peer

เปิดด้วย text editor โปรด (น่าจะเป็น nano หรือ vi) ด้วยสิทธิ์ root น่าจะต้องรันคำสั่งแบบ
แก้ไข: ssh_exchange_identification: read: connection reset by peer แล้วหาบรรทัดที่เขียนว่า ignoreip เพิ่ม IP address ของคุณในบรรทัดนี้ เพื่อบล็อก fail2ban อย่างถาวรไม่ให้เพิ่ม IP ของคุณในรายการบล็อก

Distribution แต่ละตัวทำรายละเอียดต่างกันเล็กน้อย แตการเปลี่ยนแปลงเหล่านี้ควรมีผลทันทีในกรณีส่วนใหญ่