Score:0

SSHD: ลายนิ้วมือของคีย์สาธารณะไม่เป็นไปตามที่คาดไว้

ธง ua

สองเครื่องอยู่ในรูปภาพสำหรับปัญหาของฉัน:

  • เซิร์ฟเวอร์: ใช้ Ubuntu Server 20.04.3 LTS, ใช้เซิร์ฟเวอร์ ssh
  • ลูกค้า: เรียกใช้ Ubuntu Desktop 20.04.3 LTS เรียกใช้ไคลเอนต์ ssh

ฉันคาดว่าจะใช้คู่กุญแจ ED25519 ที่สร้างขึ้น คีย์จะถูกเก็บไว้ดังต่อไปนี้:

  • id_ed25519.pub: แนบใน ~/.ssh/authorized_keys บน "เซิร์ฟเวอร์"
  • id_ed25519: เก็บไว้ใน ~/.ssh บน "ไคลเอนต์"

การกำหนดค่าบนเซิร์ฟเวอร์ใน /etc/ssh/sshd.config:

  • PubkeyAuthentication ใช่
  • AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
  • เลขที่ยืนยันรหัสผ่าน

การกำหนดค่าบนไคลเอ็นต์:

  • id_ed25519 มีให้บริการผ่านพวงกุญแจ (ดำเนินการ ssh-add สำหรับ ssh-agent ขอรหัสผ่านอย่างถูกต้อง)

ตอนนี้สิ่งที่ทำให้ฉันปวดหัว:

ขั้นตอนที่ 1: ฉันเชื่อมต่อจากไคลเอนต์ไปยังเซิร์ฟเวอร์ เมื่อฉันเข้าถึงเป็นครั้งแรก (ว่าง ~/.ssh/known_hosts บนไคลเอนต์) ฉันได้รับ: ลายนิ้วมือของคีย์ ECDSA คือ SHA256: [DefaultKeyFingerprint] คุณแน่ใจหรือไม่ว่าต้องการเชื่อมต่อต่อ [DefaultKeyFingerprint] เป็นตัวยึดสำหรับลายนิ้วมือที่แสดง ปรากฎว่าไม่ใช่ลายนิ้วมือที่ฉันคาดไว้ ความคาดหวังของฉันคือ: id_ed25519.pub ถูกใช้โดยเซิร์ฟเวอร์เพื่อรับลายนิ้วมือ สิ่งนี้จะนำไปสู่ลายนิ้วมืออื่น (ตรวจสอบผ่าน "ssh-keygen -l -f") เรียกสิ่งนี้ว่า [ลายนิ้วมือที่คาดหวัง]

ฉันพยายามเข้าใจว่า [DefaultKeyFingerprint] มาจากไหน ผลลัพธ์: เหมาะกับคีย์เริ่มต้น ssh_host_ecdsa_key.pub ที่สร้างโดย sshd ใน /etc/ssh/

ขั้นตอนที่ 2: หลังจากยอมรับคำเตือนข้างต้นแล้ว ฉันสามารถเชื่อมต่อได้สำเร็จ

ฉันต้องการทราบว่ามีการใช้คีย์สาธารณะที่อยู่เบื้องหลัง [DefaultKeyFingerprint] หรือ [ExpectedFingerprint] หรือไม่ ข้อบ่งชี้สองประการว่ามีการใช้ [ลายนิ้วมือที่คาดหวัง]:

  • การระบุคีย์ส่วนตัวที่อยู่เบื้องหลัง [DefaultKeyFingerprint] เมื่อเรียกใช้งาน "ssh" บนไคลเอ็นต์นั้น "เซิร์ฟเวอร์" ไม่ยอมรับ แม้ว่าไฟล์คีย์ส่วนตัวจะถูกระบุโดยใช้ตัวเลือก -i ข้อผิดพลาดคือ: ปฏิเสธการอนุญาต (คีย์สาธารณะ) สิ่งนี้เหมาะสมกับความคาดหวังของฉันเนื่องจากฉันอนุญาตฝั่งเซิร์ฟเวอร์ใน ~/.ssh/authorized_keys เฉพาะคีย์สาธารณะที่เหมาะกับ [ExpectedFingerprint]
  • เมื่อฉันทำงานบน "เซิร์ฟเวอร์": สถานะ systemctl ssh หลังจากเข้าสู่ระบบสำเร็จฉันได้รับผลลัพธ์ต่อไปนี้:
วันที่ 22 10:57:42 [my_machine] sshd[3255]: คีย์ที่ยอมรับ ED25519 SHA256:[ExpectedFingerprint] พบได้ที่ ~/.ssh/authorized_keys:1
วันที่ 22 10:57:42 [my_machine] sshd[3255]: ยอมรับคีย์สาธารณะสำหรับ [ผู้ใช้] จากพอร์ต 192.168.178.35 50048 ssh2: ED25519 SHA256:[ลายนิ้วมือที่คาดหวัง]
วันที่ 22 10:57:42 [my_machine] sshd[3255]: pam_unix(sshd:session): เซสชันเปิดสำหรับผู้ใช้ [ผู้ใช้] โดย (uid=0)

คำถามของฉัน:

  • คุณสามารถยืนยันข้อโต้แย้งของฉันข้างต้นได้หรือไม่ว่ามีการใช้ [ExpectedFingerprint] จริง
  • เหตุใด "เซิร์ฟเวอร์" จึงแสดงเป็นลายนิ้วมือ [DefaultKeyFingerprint] ไม่ใช่ [ExpectedFingerprint] และฉันจะทำให้ "เซิร์ฟเวอร์" แสดง [ExpectedFingerprint] ได้อย่างไร

ข้อสังเกต - ไม่รู้ว่าสำคัญไหม เมื่อฉันสร้างคู่กุญแจที่นำไปสู่ ​​[ExpectedFingerprint] ฉันระบุเครื่องหมายดอกจันในชื่อโดเมน *.mydomain.com ผลลัพธ์ของ ssh-keygen -l -f สำหรับคีย์สาธารณะทั้งสอง:

256 SHA256:[ลายนิ้วมือที่คาดหวัง] *.mydomain.com (ED25519)
256 SHA256:[DefaultKeyFingerprint] root@mymachine (ECDSA)

ขอขอบคุณล่วงหน้าสำหรับความคิดของคุณ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา