คีย์ openssh กับคีย์ putty แตกต่างกันอย่างไร


48

ฉันพบว่าssh-keygen("ssh" แพ็คเกจ) สร้างคีย์ที่แตกต่างจากputtygen("putty" แพ็คเกจ)

ถ้าฉันสร้างกุญแจสาธารณะและกุญแจส่วนตัวกับssh-keygenssh-servers บางตัวจะไม่ยอมรับกุญแจของฉัน ถ้าฉันสร้างคีย์โดยมีputtygenเซิร์ฟเวอร์เดียวเท่านั้นที่ยอมรับ

ทำไมที่เก็บ linux ไม่เสนอวิธีแก้ปัญหาทั่วไป (แพ็คเกจ) ให้? ฉันได้พบแพ็คเกจอื่นssh-3.2.9.1ซึ่งสร้างคีย์ที่ทำงานกับผงสำหรับอุดรู แต่ทำไมไม่มีวิธีแก้ปัญหาที่สะดวกใน SSH


1
สำหรับผู้เริ่ม PuTTYGen เสนอการแปลงคีย์อย่างชัดเจน รูปแบบดั้งเดิมที่ OpenSSH และ PuTTY ใช้เพื่อจัดเก็บคีย์นั้นแตกต่างกัน อย่างไรก็ตามอัลกอริทึมที่รองรับเข้ากันได้ ฉันเดาได้ว่าคุณป้อนค่าขี้ขลาดบางอย่างในฟิลด์ที่อนุญาตให้คุณระบุจำนวนบิต (เช่น DSA ต้องการ 1024 บิต) สำหรับคีย์ที่สร้างขึ้นใน PuTTYGen หรืออีกวิธีหนึ่งที่คุณเลือกบางอย่างเช่น RSA-1 เซิร์ฟเวอร์ส่วนใหญ่จะปิดใช้งานในวันนี้ น่าเสียดายที่คำถามไม่ได้ระบุสิ่งที่คุณพยายามและคาดหวัง
0xC0000022L

คำตอบ:


47

OpenSSH เป็นการดำเนินการตามมาตรฐานของโปรโตคอล SSH อย่างแท้จริง ถ้า PuTTY และ OpenSSH แตกต่างกัน PuTTY เป็นสิ่งที่เข้ากันไม่ได้

หากคุณสร้างคีย์ด้วย OpenSSH โดยใช้ssh-keygenกับตัวเลือกเริ่มต้นมันจะทำงานกับเซิร์ฟเวอร์แทบทุกตัว เซิร์ฟเวอร์ที่ไม่ยอมรับรหัสดังกล่าวอาจเป็นของโบราณใช้การใช้งาน SSH อื่นหรือกำหนดค่าด้วยวิธีที่ จำกัด แปลก คีย์บางประเภทที่ไม่ใช่ค่าเริ่มต้นอาจไม่รองรับในบางเซิร์ฟเวอร์โดยเฉพาะอย่างยิ่งคีย์ ECDSA ทำให้การสร้างเซสชันเร็วขึ้นเล็กน้อย แต่รองรับ OpenSSH เวอร์ชันล่าสุดเท่านั้น

PuTTY ใช้รูปแบบไฟล์คีย์ที่แตกต่างกัน มันมาพร้อมกับเครื่องมือในการแปลงระหว่าง.ppkรูปแบบของตัวเองและรูปแบบของ OpenSSH

ssh-3.2.9.1 นี้คุณพบว่าเป็นผลิตภัณฑ์เชิงพาณิชย์ที่มีรูปแบบคีย์ส่วนตัวที่แตกต่างกัน ไม่มีเหตุผลที่จะใช้แทน OpenSSH มันสามารถเข้ากันได้น้อยกว่าเท่านั้นต้องใช้การจ่ายเงินและไม่มีศูนย์สอนเกี่ยวกับวิธีการใช้งานที่นั่น


24

Linux distros ส่วนใหญ่มีputtyให้สำหรับ Linux คุณสามารถติดตั้งputtyบนฝั่ง Linux และใช้puttygenเพื่อแปลงไฟล์. pkk เป็นไฟล์รูปแบบ ssh ปกติ (เรียกว่าไฟล์ PEM - แม้ว่าจะไม่ได้รับ. pem ในชื่อไฟล์)

puttygen id_dsa.ppk -O private-openssh -o id_dsa

หมายเหตุ:คุณยังสามารถใช้puttygenเพื่อนำเข้าไฟล์ PEM สไตล์ ssh ได้อีกputtyด้วย

ผู้เขียน PuTTY เลือกใช้งานเพื่อความเรียบง่ายดังนั้นคีย์สาธารณะและไพรเวตซึ่งประกอบไปด้วยการรักษาความปลอดภัยพื้นฐานที่ใช้โดยการพิสูจน์ตัวตนของคีย์ putty / ssh 2 จะถูกเก็บไว้ในไฟล์. pkk ที่เป็นกรรมสิทธิ์ โดยทั่วไปคีย์เหล่านี้จะถูกเก็บรักษาเป็น 2 ไฟล์แยกกันโดย ssh

โดยปกติแล้วไฟล์สำคัญจะถูกเก็บไว้ในไดเรกทอรี, .ssh

: มีภาพรวมที่ดีของขั้นตอนการแปลงที่นี่ในคำถามนี้กองมากเกินบรรดาศักดิ์เป็นแปลงพีอีเอ็มเพื่อ PPK รูปแบบไฟล์

ผู้เขียนฉาบยังกล่าวถึงเหตุผลของเขาสำหรับการใช้ไฟล์ .ppk ในคู่มือผู้ใช้putty คุณสามารถอ่านได้ที่นี่ในหัวข้อ 8.2.12


คุณหมายถึงลินุกซ์ของฉันล้าสมัยและมีความเสี่ยง SSH-1 (ถ้าฉันไม่ใช้ผงสำหรับอุดรู)? และมันราคาไม่แพง? ช่องโหว่ของ SSH-1 อธิบายไว้ใน วิกิพีเดีย
YarLinux

ไม่แน่ใจว่าคุณได้รับสิ่งนั้น ไม่คุณควรจะสบายดี คุณใช้ Linux รุ่นใด คุณใช้ Linux Distro อะไร uname -aเรียกใช้คำสั่งนี้เพื่อหารุ่นลินุกซ์ของคุณ: Linux lsb_release -adistro:
slm

ฉันใช้ Ubuntu 12.04 คุณหมายถึง SSH-2 มีรูปแบบต่างกันหรือไม่? ฉันสับสนด้วยชื่อของแพ็คเกจและคำสั่งที่ "ssh"
YarLinux

ฉันเห็น. เครื่องมือ ssh ที่คุณอ้างถึงมักเป็นส่วนหนึ่งของแพ็คเกจที่เรียกว่า openssh เวอร์ชันของซอฟต์แวร์นี้ไม่มีส่วนเกี่ยวข้องกับ SSH-1 และ SSH-2 ที่คุณอ้างถึง คำศัพท์นั้น (SSH-1 & SSH-2) อ้างถึงประเภทของไฟล์คีย์ที่คุณกำลังทำงานด้วย ประเภทไฟล์นี้ไม่ควรเป็นปัญหาสำหรับคุณตราบใดที่คุณใช้ openssh เวอร์ชันล่าสุด
slm

มีสามรูปแบบที่แตกต่างกันของคีย์? OpenSSH, ssh.com และ PuTTY?
YarLinux

12

พวกเขาทั้งคู่เก็บ "คู่คีย์ RSA สำหรับรุ่น 2 ของโปรโตคอล SSH" และสามารถแปลงสลับกันได้ อย่างไรก็ตามเกี่ยวกับความแตกต่างของรูปแบบการจัดเก็บจริง:

จากhttps://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats-natively.html

ข้อดีของรูปแบบคีย์ PuTTY คือ:

  • ครึ่งหนึ่งของประชาชนที่สำคัญคือการเก็บไว้ในเพลนเท็กซ์ รูปแบบคีย์ส่วนตัว OpenSSH ของการเข้ารหัสไฟล์ที่สำคัญทั้งหมด ,เพื่อให้ลูกค้ามีการขอรหัสผ่านก่อนที่จะสามารถทำอะไรกับกุญแจสำคัญที่ทุกคน โดยเฉพาะอย่างยิ่งนี่หมายความว่าจะต้องขอข้อความรหัสผ่านของคุณก่อนจึงจะสามารถเสนอรหัสสาธารณะให้กับเซิร์ฟเวอร์เพื่อตรวจสอบสิทธิ์ รูปแบบของ PuTTY เก็บคีย์สาธารณะในรูปแบบธรรมดาและเข้ารหัสเฉพาะไพรเวตครึ่งซึ่งหมายความว่ามันสามารถส่งกุญแจสาธารณะไปยังเซิร์ฟเวอร์โดยอัตโนมัติและตรวจสอบว่าเซิร์ฟเวอร์เต็มใจรับการรับรองความถูกต้องด้วยคีย์นั้นหรือไม่และจะขอเพียง ข้อความรหัสผ่านถ้าต้องการจริงๆ

    ฉันคิดว่า OpenSSH จะอ่าน.pubไฟล์เพื่อจุดประสงค์นี้ถ้ามันปรากฏข้างไฟล์ไพรเวตคีย์ แต่นี่เป็นที่มาของความสับสนบ่อยเท่าความสะดวกสบาย (ฉันเคยเห็นคนมาแทนที่ไฟล์ไพรเวตคีย์และปล่อยให้ล้าสมัย.pubอยู่ข้างๆแล้วก็ดีมาก สับสนโดยกระบวนการตรวจสอบความถูกต้อง SSH ที่เป็นผลลัพธ์!)
  • รหัสถูกดัดแปลงอย่างเต็มที่ รูปแบบคีย์ที่เก็บรหัสสาธารณะในข้อความธรรมดาอาจมีความเสี่ยงต่อการถูกโจมตีซึ่งกุญแจสาธารณะครึ่งหนึ่งของคีย์นั้นได้รับการแก้ไขในลักษณะที่ลายเซ็นต์ที่ทำกับข้อมูลการรั่วไหลของกุญแจที่เกี่ยวกับกุญแจส่วนตัว ด้วยเหตุนี้รูปแบบคีย์ของ PuTTY จึงมี MAC (รหัสการตรวจสอบข้อความ) ทำการปิดรหัสผ่านและครอบคลุมส่วนสาธารณะและส่วนตัวของคีย์ดังนั้นเราจึงให้ความสะดวกสบายในการมีรหัสสาธารณะในรูปแบบธรรมดา แต่เรายังตรวจพบความพยายามใด ๆ ในทันทีเมื่อมีการโจมตีด้วยการปลอมแปลงซึ่งเป็นการผสมผสานระหว่างความปลอดภัยและความสะดวกสบายซึ่งฉันไม่เชื่อว่าพบในรูปแบบคีย์อื่น ๆ เพื่อประโยชน์ด้านข้าง MAC ยังครอบคลุมถึงความคิดเห็นของคีย์เพื่อป้องกันความเสียหายที่อาจเกิดขึ้นได้หากมีคนเปลี่ยนกุญแจสองปุ่มและแลกเปลี่ยนความคิดเห็น

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

[ เน้นเพิ่ม]

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