การยืนยันคีย์โฮสต์ล้มเหลวหมายความว่าอย่างไร

What Does Host Key Verification Failed Mean



ขณะใช้เซิร์ฟเวอร์ ssh หนึ่งในข้อผิดพลาดทั่วไปที่คุณจะพบคือ การยืนยันคีย์โฮสต์ล้มเหลว . เพื่อให้เข้าใจถึงสาเหตุของข้อผิดพลาดนี้ ก่อนอื่นมาทำความเข้าใจว่า ssh สร้างการเชื่อมต่ออย่างไร

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









หากคุณพิมพ์ ใช่ , ลูกค้าจะเพิ่มคีย์โฮสต์สาธารณะให้กับ .ssh/known_hosts ไฟล์. เมื่อเพิ่มคีย์ของเซิร์ฟเวอร์ระยะไกลแล้ว ในครั้งต่อไปที่คุณพยายามเชื่อมต่อกับเซิร์ฟเวอร์เดียวกัน ไคลเอ็นต์จะเปรียบเทียบคีย์กับคีย์ที่จัดเก็บไว้ใน รู้จัก_hosts ไฟล์.



คุณจะไม่ได้รับการแจ้งเตือนใด ๆ หากมีคีย์อยู่ในปุ่ม รู้จัก_hosts ไฟล์. เซิร์ฟเวอร์จะเชื่อมต่อทันที





เหตุใดการตรวจสอบรหัสโฮสต์จึงล้มเหลว เกิดข้อผิดพลาด

สาเหตุหลักที่ทำให้การตรวจสอบคีย์โฮสต์ล้มเหลวคือ คีย์โฮสต์ระยะไกลมีการเปลี่ยนแปลงและไม่เหมือนกับที่เก็บไว้ใน รู้จัก_hosts ไฟล์. คีย์มักจะเปลี่ยนแปลงเมื่อมีการสร้างเซิร์ฟเวอร์ใหม่ และคุณได้รับข้อผิดพลาดดังที่แสดงด้านล่าง:



วิธีแก้ไข การยืนยันคีย์โฮสต์ล้มเหลว ข้อผิดพลาด

เพื่อแก้ไขข้อผิดพลาดนี้ เราต้องลบคีย์ที่ละเมิดออกจาก รู้จัก_hosts ไฟล์ที่มีอยู่ในระบบของเราใน .ssh ไดเรกทอรี ข้อผิดพลาดให้ที่อยู่ IP ของเซิร์ฟเวอร์ระยะไกลและหมายเลขบรรทัดที่เก็บคีย์ไว้ใน รู้จัก_hosts ไฟล์.

ในข้อผิดพลาดข้างต้น /home/user/.ssh/known_hosts:7 , NS : 7 คือหมายเลขบรรทัดที่ละเมิด หลายวิธีในการแก้ไขข้อผิดพลาดนี้แสดงไว้ด้านล่าง:

วิธีที่ 1:

วิธีแรกในการแก้ไขข้อผิดพลาดนี้คือการใช้ sed สั่งการ. NS sed คำสั่งใช้เพื่อแก้ไขไฟล์ข้อความเพื่อค้นหา เพิ่ม หรือลบบางสิ่งออกจากไฟล์ เรากำลังใช้เพื่อลบโฮสต์ที่ละเมิด:

$sed -ผม '7 วัน'~.ssh/รู้จัก_hosts

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

วิธีที่ 2:

วิธีที่สองคือการเปิด รู้จัก_hosts ไฟล์ในโปรแกรมแก้ไขใด ๆ :

$นาโน.ssh/รู้จัก_hosts

และลบบรรทัดที่ละเมิดด้วยตนเองและบันทึกไฟล์

วิธีที่ 3:

วิธีที่สามคือการลบเซิร์ฟเวอร์โดยใช้ ssh-keygen สั่งการ. ทำตามไวยากรณ์ที่กล่าวถึงด้านล่าง:

$ssh-keygen -NS [ที่อยู่ IP]

ตัวอย่างเช่น เพื่อลบโฮสต์คีย์ของ 192.168.10.116 , ใช้:

$ssh-keygen -NS192.168.10.116

บทสรุป

ข้อผิดพลาดในการตรวจสอบคีย์โฮสต์เกิดขึ้นเมื่อคีย์ของเซิร์ฟเวอร์ระยะไกลเปลี่ยนแปลงและไคลเอ็นต์ไม่ตรวจสอบคีย์จากคีย์ที่เก็บไว้ คีย์เซิร์ฟเวอร์ถูกเก็บไว้ใน รู้จัก_hosts ไฟล์ทางฝั่งไคลเอ็นต์ และเมื่อสร้างการเชื่อมต่อ ไคลเอ็นต์จะตรวจสอบคีย์โดยเปรียบเทียบกับคีย์ที่จัดเก็บไว้ใน รู้จัก_host ไฟล์และเมื่อล้มเหลว คุณจะได้รับ a การยืนยันคีย์โฮสต์ล้มเหลว ข้อผิดพลาด.

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