แนวคิดด้านความปลอดภัยคือคุณทำการตรวจสอบลายนิ้วมือของคีย์เซิร์ฟเวอร์ด้วยตนเอง/นอกแบนด์หนึ่งครั้งสำหรับเซิร์ฟเวอร์ใหม่ทุกเครื่องที่คุณเชื่อมต่อ เพื่อให้แน่ใจว่าคุณเชื่อมต่อกับเซิร์ฟเวอร์จริงที่คุณต้องการเข้าถึงและคุณไม่ได้ การเชื่อมต่อกับเซิร์ฟเวอร์ที่ไม่ถูกต้องหรือผู้โจมตีจากคนกลางหรือคนอื่นๆ
เมื่อลายนิ้วมือตรงกัน ให้คุณเพิ่มรหัสเซิร์ฟเวอร์ไปยัง Know_hosts ของคุณและคุณจะได้รับแจ้งอีกครั้งก็ต่อเมื่อเซิร์ฟเวอร์ไม่ได้เสนอรหัสที่เชื่อถือได้อีกต่อไป ในกรณีนั้น คีย์เซิร์ฟเวอร์อาจมีการเปลี่ยนแปลงหรือมีการเล่นที่ไม่ถูกต้อง แต่คุณต้องตรวจสอบด้วยวิธีใดวิธีหนึ่ง
ในทางปฏิบัติและโดยเฉพาะอย่างยิ่งในสภาพแวดล้อมขนาดใหญ่ที่การตรวจสอบลายนิ้วมือด้วยตนเองมักไม่สามารถทำได้จริง วิ่ง ssh-keyscan
อาจเป็นการสมควรที่จะเติม Know_hosts (ครั้งเดียว) แต่ถือว่าขณะนี้ไม่มี MITM หรือการเล่นที่ผิดกติกาอื่น ๆ สถานะปัจจุบันจะเป็นบรรทัดฐานที่ยอมรับได้ และคุณจะสามารถตรวจพบการเปลี่ยนแปลงคีย์เซิร์ฟเวอร์ในอนาคตเท่านั้น
นั่นเป็นการลบการรักษาความปลอดภัยบางส่วน แต่อาจเป็นความเสี่ยงที่ยอมรับได้
หากต้องการเปลี่ยนกลับจากคีย์เซิร์ฟเวอร์ใดๆ ที่ได้รับการยอมรับโดยไม่ได้ตั้งใจให้เชื่อถือ จำเป็นต้องลบคีย์นั้นออกจากไฟล์known_hosts
ตัวเลือกของคุณคือ:
- ลบคีย์เซิร์ฟเวอร์ที่เชื่อถือได้ทั้งหมดโดยการลบทั้งหมด
Ë/.ssh/known_hosts
- แก้ไขด้วยตนเอง
Ë/.ssh/known_hosts
และลบบรรทัดที่มีรายการเฉพาะสำหรับเซิร์ฟเวอร์
หากคุณเข้าถึงเซิร์ฟเวอร์ระยะไกลด้วยวิธีอื่น เช่น ด้วยทั้งชื่อโฮสต์และที่อยู่ IP อาจมีคีย์เซิร์ฟเวอร์สำหรับแต่ละรายการในknown_hosts
- บางครั้งชื่อโฮสต์ใน
Ë/.ssh/known_hosts
ถูกแฮช (เมื่อ HashKnownHosts
เปิดใช้งานคำสั่งสำหรับ ssh) คุณไม่สามารถแก้ไขด้วยตนเองได้ Ë/.ssh/known_hosts
และคุณควรใช้ ssh-keygen -R ชื่อโฮสต์
เพื่อลบคีย์ที่เก็บไว้สำหรับ HOSTNAME นั้น อีกครั้ง อาจมีรายการที่แตกต่างกันสำหรับชื่อโฮสต์, hostname.example.com และที่อยู่ IP ของโฮสต์นั้น