เมื่อพยายามใช้ SSH เชื่อมต่อเซิร์ฟเวอร์ระยะไกล อาจได้ข้อผิดพลาด no matching key exchange method found พร้อมคำแนะนำว่าควรใช้อัลกอริทึมเข้ารหัสไหน ไม่สามารถเชื่อมต่อเซิร์ฟเวอร์ระยะไกลได้ทุกครั้งที่เจอข้อผิดพลาดนี้ กระบวนการนี้น่าหงุดหงิด แต่ข้อผิดพลาดนี้พบบ่อยมาก จนผู้ใช้ Unix มักพูดคุยกันว่ากำลังเจอ และให้คำแนะนำเดียวกันเพื่อหลุดพ้น
วิธีแก้ไขต่อไปนี้ทดสอบบนทุกอย่างที่ SSH ทำงานได้ แต่อาจพบบ่อยที่สุดบน Unix และ Linux ควรใช้กระบวนการเดียวกันแก้ไขได้หากรัน SSH บน Windows หรือแพลตฟอร์มแปลกๆ แต่ตัวเลือกสวิตช์อาจต่างออกไปเล็กน้อย
วิธีที่ 1: ติดต่อเซิร์ฟเวอร์ใหม่และสร้างคีย์ใหม่ (Recontacting Server & Regenerating Keys)
ก่อนทำอะไร ให้แน่ใจว่าสามารถ reproduce ข้อผิดพลาดได้ บางครั้งข้อความนี้แค่เพราะมีบริการฝั่งระยะไกลที่ไม่ได้รันอยู่ ซึ่งอาจแก้ไขไปแล้วในตอนนั้น ขณะเรารัน SSH ใน VM ที่อนุญาตการเชื่อมต่อไปที่ที่อยู่เซิร์ฟเวอร์ปลอมหรือ example.org (ที่อนุมัติสำหรับเอกสาร) แต่คุณต้องแทนที่ด้วยที่อยู่เครือข่ายจริง

หากยังเจอ ให้ลองสร้างคีย์ใหม่ด้วย ssh-keygen -A จาก command prompt จะ refresh cache ที่แอป SSH ใช้เชื่อมต่อเซิร์ฟเวอร์ระยะไกล นอกจากนี้ อาจลองรีสตาร์ท SSH ด้วย service ssh restart และรอสักครู่
หากยังมีปัญหา แสดงว่าเซิร์ฟเวอร์และไคลเอนต์ไม่เคยตกลงกันได้เกี่ยวกับโปรโตคอลที่ถูกต้อง OpenSSH implement โปรโตคอลหลายแบบ แต่ปิดบางแบบไว้เพราะรู้แล้วว่าถูกแฮกและไม่ปลอดภัย ต้องอัปเดตแพ็กเกจ SSH ทั้งหมดที่ฝั่งเซิร์ฟเวอร์ ให้แน่ใจว่าผู้ดูแลระบบทราบ หากเป็นเซิร์ฟเวอร์ของตัวเอง ให้อัปเดตทันที
หากไม่สามารถอัปเดตได้ และยอมรับความเสี่ยงของการใช้อัลกอริทึมที่ถูกแฮก มีวิธีฝั่งไคลเอนต์ (client-side) เพื่อ bypass ข้อความผิดพลาดนี้
วิธีที่ 2: เปิดใช้งานตัวเลือก Legacy ใน OpenSSH
ดูข้อความผิดพลาดหลังคำว่า Their offer: เพื่อดูว่าเซิร์ฟเวอร์ระยะไกลชอบอัลกอริทึมไหน ระบบส่วนใหญ่ควรใช้ openssh7 ซึ่งปิด diffie-hellman-group1-sha1 แบบเก่าไปแล้ว แต่จะบอกให้ใช้ sha1 หากยังค้างอยู่ที่ openssh6 หรือแบบคล้ายกัน
รัน
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 testhost@example.org
พร้อมที่อยู่โฮสต์หรือ IP จริงของเซิร์ฟเวอร์ระยะไกล เพื่อแก้ปัญหาฝั่งไคลเอนต์ หากแก้ได้ แสดงว่ามันมองหาโปรโตคอล sha1 แบบเก่า โซลูชัน sha1 แบบเก่านี้ถูกปิดด้วยเหตุผลที่ดี แต่อาจ bypass ได้ถาวรมากขึ้นโดยใช้ nano หรือ vim แก้ไขไฟล์ ~/.ssh/config และเพิ่มบรรทัด:
Host example.org KexAlgorithms +diffie-hellman-group1-sha1
จำไว้ว่าเครื่องหมาย plus (+) ต้องอยู่ เพราะหมายถึง SSH จะ append (เพิ่ม) แทนที่จะ replace (แทนที่) default ที่ปลอดภัยกว่า เมื่อเซิร์ฟเวอร์อัปเดตแพ็กเกจ คุณจะใช้โปรโตคอลที่ปลอดภัยกว่าในส่วนใหญ่
หากเคยได้ข้อผิดพลาดที่กล่าวถึงโปรโตคอล ssh-dss แทน sha1 ให้ลองคำสั่งนี้ตามด้วยชื่อโฮสต์:
ssh -oHostKeyAlgorithms=+ssh-dss
หากทำงานได้ จะต้องแก้ไข ~/.ssh/config อีกครั้ง หลังบรรทัด Host ให้เพิ่ม tab และ:
HostKeyAlgorithms +ssh-dss
จำไว้ว่าเหมือนระบบ sha1 คีย์ ssh-dss ถูก deprecated ไปด้วยเหตุผลความปลอดภัยที่สมเหตุสมผลมาก การใช้งานอาจนำเข้าช่องโหว่เข้ามาในการเชื่อมต่อ ควรมองว่าเป็น temporary fix เท่านั้น (ถือว่าเป็น fix ชั่วคราวก็แล้วกัน) ต้องให้เซิร์ฟเวอร์อัปเดตเร็วที่สุด