คีย์ SSH ส่วนตัว / สาธารณะของฉันบน UNIX อยู่ที่ไหน


17

ฉันเริ่มเข้าใจว่า RSA และระบบกุญแจสาธารณะ / ส่วนตัวทำงานอย่างไรและฉันสงสัยว่าที่เก็บคีย์ SSH ส่วนตัวและสาธารณะของฉันอย่างไร เมื่อฉันไปที่ไดเรกทอรีบ้านของฉันและฉันเรียกดูไดเรกทอรี. ssh (cd .ssh) ของฉันฉันเห็นเฉพาะไฟล์ "known_hosts" ซึ่งฉันเดาว่ามีกุญแจสาธารณะของเซิร์ฟเวอร์ SSH ระยะไกลที่แตกต่างกันที่ฉันรู้จัก

ฉันจะหากุญแจเหล่านี้ได้ที่ไหน ฉันจำไม่ได้แม้แต่การสร้างพวกเขาตามวิธี แต่เนื่องจากฉันได้สร้างการเชื่อมต่อ ssh มาก่อนพวกเขาจะต้องอยู่ที่ไหนสักแห่ง

ฉันใช้ OpenSSH_5.2p1 กับ MAC OS 10.6

ขอบคุณ!

คำตอบ:


15

~/.ssh/id_rsaและ~/id_rsa.pubมักจะ แต่ไม่เป็นไปตามนั้น ssh จะต้องสร้างคู่และบันทึกไว้: โดยทั่วไปแล้ว ssh จะใช้โปรโตคอล SSL ซึ่งสร้างเซสชั่นคีย์โดยใช้อัลกอริทึมการแลกเปลี่ยนคีย์Diffie / Hellmanหรือตัวแปรบางอย่าง นั่นหมายถึงการจับมือการตั้งค่าการเชื่อมต่อจะสร้างเซสชั่นคีย์และละทิ้งมันเมื่อเซสชั่นเสร็จสมบูรณ์

อ่านอัลกอริธึมมันก็สวยดี: การใช้คณิตศาสตร์ค่อนข้างง่ายมันสร้างคีย์ที่รู้จักทั้งสองด้านของการเชื่อมต่อโดยไม่ต้องส่งคีย์ผ่านการเชื่อมต่อ


นั่นหมายความว่าถ้าฉันไม่เคยถูกขอให้สร้างกุญแจ SSH ที่ RSA ไม่เคยใช้? กล่าวอีกนัยหนึ่งว่าอัลกอริทึมแบบอสมมาตรบางตัวนั้นใช้เพื่อแบ่งปันคีย์เซสชัน แต่คีย์สาธารณะ / ส่วนตัวชั่วคราวสำหรับการเชื่อมต่อไม่ได้เก็บไว้ในคอมพิวเตอร์ของฉัน

ถูกต้องแล้ว ที่จริงแล้วการเข้ารหัสนั้นสมมาตร - อัลกอริธึมแบบอสมมาตรไม่เหมาะสำหรับการสตรีม Diffie-Hellman ใช้เพื่อสร้างคีย์เซสชันสำหรับการเข้ารหัสแบบสมมาตร หากคุณใช้คู่คีย์สาธารณะ / ส่วนตัวแทนพวกเขาจะใช้ในการจับมือกันเพื่อสร้างคีย์เซสชันสำหรับอัลกอริทึมแบบสมมาตร
Charlie Martin

@mieli: ไม่พวกเขาไม่เคยถูกสร้างขึ้นตั้งแต่แรก publickeyเป็นวิธีการพิสูจน์ตัวตนที่เป็นไปได้เพียงวิธีเดียวเท่านั้นในหลาย ๆ วิธี หากคุณเพียงเข้าสู่ระบบโดยใช้passwordหรือkeyboard-interactiveรหัสผ่านของตัวเองถูกส่ง (หมายเหตุ: อย่าสับสนคีย์ผู้ใช้คีย์โฮสต์และคีย์เซสชัน)
user1686

@ grawity พวกเราส่วนใหญ่เห็นด้วยที่นี่ แต่ขอให้ระวังหน่อย การแลกเปลี่ยนคีย์ Diffie-Hellman เกี่ยวข้องกับ RSA และอัลกอริธึมการเข้ารหัสแบบอสมมาตรอื่น ๆ และไม่สมมาตรกันเนื่องจากทั้งสองด้านของการแลกเปลี่ยนมี "ครึ่ง" ของข้อตกลงในที่สุด พวกเขาทำมีสองส่วนที่สำคัญและที่สำคัญที่สุดและขั้นตอนที่แน่นอนที่จะสร้างมันจะถูกยกเลิกในตอนท้ายของเซสชั่น อย่างไรก็ตามพวกมันไม่ใช่ส่วนสาธารณะและส่วนตัวของคู่ RSA
Charlie Martin

4

คีย์ ssh สาธารณะและส่วนตัวส่วนบุคคลของคุณจะถูกเก็บไว้ใน:

$HOME/.ssh/id_dsa     (private key)
$HOME/.ssh/id_dsa.pub (public key)

หรืออาจเป็นได้id_rsaและid_rsa.pubถ้าคุณสร้างคีย์ RSA แทนคีย์ DSA (OpenSSH รองรับทั้งสองรูปแบบ)

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

ปกติแล้วคุณควรสร้างคีย์ส่วนตัว ssh ด้วยข้อความรหัสผ่าน หากคุณสร้างขึ้นโดยไม่มีข้อความรหัสผ่านใครก็ตามที่ได้รับสำเนาของคีย์ส่วนตัวของคุณสามารถแอบอ้างเป็นตัวคุณได้ ssh-agentช่วยให้คุณใช้รหัสที่มีข้อความรหัสผ่านโดยไม่ต้องป้อนข้อความรหัสผ่านใหม่ทุกครั้งที่คุณใช้งาน


2

หากคุณไม่ได้สร้าง keypair คุณอาจไม่ได้มีอย่างใดอย่างหนึ่ง

การรับส่งข้อมูลของ SSH2 นั้นได้รับการเข้ารหัสด้วยคีย์เซสชันแบบสมมาตรซึ่งสร้างขึ้นโดยใช้อัลกอริทึม DH, ECDH หรือการแลกเปลี่ยนคีย์ GSSAPI ทั้งคีย์โฮสต์หรือที่สำคัญผู้ใช้จะใช้สำหรับการเข้ารหัสข้อมูล - วัตถุประสงค์เฉพาะของพวกเขาคือการตรวจสอบ

ตอนนี้โปรดจำไว้ว่า SSH รองรับวิธีการตรวจสอบความถูกต้องหลายวิธี: นอกจากpublickeyเซิร์ฟเวอร์เกือบทั้งหมดยอมรับวิธีง่าย ๆpasswordและ / หรือkeyboard-interactiveไม่มีการสร้างหรือใช้งานคีย์ - รหัสผ่านจะถูกส่งไปยังเซิร์ฟเวอร์ระยะไกลเพื่อทำการตรวจสอบ

กล่าวอีกนัยหนึ่ง "ตั้งแต่ฉันได้สร้างการเชื่อมต่อ ssh มาก่อนพวกเขาจะต้องอยู่ที่ไหนสักแห่ง" ไม่ถูกต้อง - keypair ผู้ใช้ไม่จำเป็นสำหรับการสร้างการเชื่อมต่อ


หากคุณไม่ได้สร้าง keypair ก็มีแนวโน้มที่จะอยู่ใน~/.ssh/id_*- ตัวอย่างเช่นid_rsaสำหรับ keypair RSA ค่าเริ่มต้นid_ecdsaสำหรับ ECDSA, id_dsaสำหรับ DSA แม้ว่าไฟล์เหล่านี้มีทั้งส่วนภาครัฐและเอกชนของ keypair ส่วนที่ประชาชนมักจะสกัดโดยอัตโนมัติในการแยกid_*.pubไฟล์เพื่อความสะดวก ( id_rsa.pubสำหรับid_rsaและอื่น ๆ )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.