คุณจะทดสอบกุญแจคู่ DSA สาธารณะ / ส่วนตัวได้อย่างไร


167

มีวิธีง่าย ๆ ในการตรวจสอบว่าคีย์ส่วนตัวที่กำหนดตรงกับคีย์สาธารณะที่กำหนดหรือไม่ ฉันมี * .pub และไฟล์ * .key ไม่กี่ไฟล์และฉันต้องตรวจสอบว่าไฟล์ไหนบ้าง

อีกครั้งไฟล์เหล่านี้คือ pub / key DSA

ฉันต้องการซับบางอย่าง ...

คำตอบ:


259

ฉันพบวิธีที่ใช้งานได้ดีกว่าสำหรับฉัน:

ssh-keygen -y -f <private key file>

คำสั่งนั้นจะส่งออกคีย์สาธารณะสำหรับคีย์ส่วนตัวที่กำหนดดังนั้นให้เปรียบเทียบผลลัพธ์กับแต่ละไฟล์ * .pub


2
สิ่งนี้ทำอะไรกันแน่? ทำไมต้อง ssh
sammiwei

2
อาจเป็นเพราะเขากำลังใช้
คู่กุญแจ

2
ในกรณีของฉันเซิร์ฟเวอร์งานส่วนกลางมีid_rsa.pub.blahhostไฟล์ไม่กี่โหลและฉันไม่รู้ว่าอันไหนที่ตรงกับid_rsaรหัสส่วนตัวโดดๆ & ฉันกำลังตั้งค่ารหัสผ่านที่ไม่มีรหัสผ่านดังนั้นฉันจึงสามารถโยกย้ายออกจากเว็บไซต์เก่าได้ การสร้างคู่คีย์ใหม่ไม่ใช่ตัวเลือก ฉันได้รับกุญแจของฉันตั้งค่าได้ดีและจะไม่ไปยุ่งที่
Chris K

1
วิธีนี้ดูเหมือนจะใช้ได้กับ SSH-keys ทุกประเภท ฉันยังสามารถกู้คืนคีย์สาธารณะที่หายไปด้วยวิธีนี้
Jari Turkia

53

ฉันมักจะเปรียบเทียบแฮช MD5 ของโมดูลัสโดยใช้คำสั่งเหล่านี้:

Certificate: openssl x509 -noout -modulus -in server.crt | openssl md5
Private Key: openssl rsa -noout -modulus -in server.key | openssl md5
CSR: openssl req -noout -modulus -in server.csr | openssl md5

หากแฮชตรงกันไฟล์ทั้งสองจะทำงานร่วมกัน


48

สำหรับคีย์ DSA ให้ใช้

 openssl dsa -pubin -in dsa.pub -modulus -noout

เพื่อพิมพ์กุญแจสาธารณะจากนั้น

 openssl dsa -in dsa.key -modulus -noout

เพื่อแสดงพับลิกคีย์ที่สอดคล้องกับไพรเวตคีย์จากนั้นเปรียบเทียบ


18

สมมติว่าคุณมีกุญแจสาธารณะในใบรับรอง x.509 และสมมติว่าพวกเขาเป็นกุญแจ RSA จากนั้นสำหรับแต่ละคีย์สาธารณะให้ทำ

    openssl x509 -in certfile -modulus -noout

สำหรับคีย์ส่วนตัวแต่ละอันให้ทำ

    openssl rsa -in keyfile -modulus -noout

จากนั้นจับคู่คีย์ด้วยโมดูลัส


17

การตรวจสอบสามารถทำได้ง่ายขึ้นด้วย diff:

diff <(ssh-keygen -y -f <private_key_file>) <public key file>

สิ่งเดียวที่แปลกคือ diff ต่างบอกว่าไม่มีอะไรเลยถ้าไฟล์เหมือนกันดังนั้นคุณจะได้รับการบอกกล่าวถ้าสาธารณะและส่วนตัวไม่ตรงกัน


3
วิธีรับเอาต์พุตเมื่อไฟล์ตรงกัน:diff -s
Roland

3
นี่คือคำตอบที่ยอดเยี่ยม (1) diff -qsส่งคืนคำตอบง่ายๆ "เหมือนกัน / ไม่เหมือนกัน" (2) คุณควรลบความคิดเห็นในไฟล์กุญแจสาธารณะก่อนเรียกใช้ diff
emory

7

ลบพับลิกคีย์และสร้างคีย์ใหม่จากไพรเวตคีย์ เก็บไว้ในไดเรกทอรีที่แยกต่างหากหรือใช้การตั้งชื่อเพื่อให้ตรง


3
คำถามกำลังถามวิธีการตรวจสอบและอุปกรณ์ที่เราจะทำการตรวจสอบในอาจไม่มีสิ่งอำนวยความสะดวกในการสร้างใหม่
ArmenB

5

ป้อนคำสั่งต่อไปนี้เพื่อตรวจสอบว่าคีย์ส่วนตัวและคีย์สาธารณะเป็นชุดที่ตรงกัน (เหมือนกัน) หรือไม่เป็นชุดที่ตรงกัน (ต่างกัน) ในไดเรกทอรี $ USER / .ssh คำสั่ง cut ป้องกันความคิดเห็นที่จุดสิ้นสุดของบรรทัดในพับลิกคีย์จากการเปรียบเทียบอนุญาตให้เปรียบเทียบคีย์เท่านั้น

ssh-keygen -y -f ~/.ssh/id_rsa | diff -s - <(cut -d ' ' -f 1,2 ~/.ssh/id_rsa.pub)

เอาต์พุตจะมีลักษณะเหมือนหนึ่งในบรรทัดเหล่านี้

Files - and /dev/fd/63 are identical

Files - and /dev/fd/63 differ

ฉันเขียนเชลล์สคริปต์ที่ผู้ใช้ใช้เพื่อตรวจสอบการอนุญาตไฟล์ของ ~ / .ssh / ไฟล์และชุดคีย์ที่ตรงกัน มันแก้ปัญหาของฉันด้วยการตั้งค่าเหตุการณ์ของผู้ใช้ มันอาจช่วยคุณได้ https://github.com/BradleyA/docker-security-infrastructure/tree/master/ssh

หมายเหตุ: คำตอบก่อนหน้าของฉัน (ในมีนาคม 2018) ไม่ทำงานกับ openssh รุ่นล่าสุดอีกต่อไป คำตอบก่อนหน้า: diff -qs <(ssh-keygen -yf ~ / .ssh / id_rsa) <(cut -d '' -f 1,2 ~ / .ssh / id_rsa.pub)


ฉันเดาว่าคุณควรทำอย่างละเอียดโพสต์ของคุณใกล้กับstackoverflow.com/a/22595408/3102264
mpromonet

ข้ามการโพสต์ไปยังความผิดพลาดของเซิร์ฟเวอร์: วิธีตรวจสอบว่าการจับคู่คีย์สาธารณะ / ส่วนตัว RSA ตรงกันหรือไม่
Peter Mortensen

4

หากคุณอยู่ใน Windows และต้องการใช้ GUI ด้วยputtygenคุณสามารถนำเข้ากุญแจส่วนตัวของคุณได้:

ป้อนคำอธิบายรูปภาพที่นี่

เมื่อนำเข้าแล้วคุณสามารถบันทึกรหัสสาธารณะและเปรียบเทียบกับของคุณได้


1

เข้ารหัสบางสิ่งด้วยรหัสสาธารณะและดูว่ารหัสส่วนตัวใดถอดรหัส

นี้บทความโครงการรหัสโดยไม่มีใครอื่นนอกจาก Jeff Atwood ใช้กระดาษห่อง่ายรอบ NET ชั้นเรียนการเข้ารหัสลับ สมมติว่าคีย์เหล่านี้ถูกสร้างขึ้นเพื่อใช้กับ RSA ใช้คลาสแบบไม่สมมาตรกับพับลิกคีย์ของคุณเพื่อเข้ารหัสและเหมือนกับคีย์ส่วนตัวของคุณในการถอดรหัส


ฉันกำลังมองหาบางสิ่งที่ง่ายขึ้นอีกนิด พูดได้ว่าเปลือกหนึ่งมีซับหรือคล้ายกัน ฉันใช้ linux และมีสิ่งปกติเช่น openssl ที่ติดตั้ง
Loki

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

0

ถ้ามันไม่คืนสิ่งใดเลยพวกมันจะจับคู่กัน:

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost

-2

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


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