ฉันมีสองไฟล์id_rsa
และid_rsa.pub
. คำสั่งใดที่สามารถใช้เพื่อตรวจสอบความถูกต้องหากเป็นคู่ที่ถูกต้อง
ฉันมีสองไฟล์id_rsa
และid_rsa.pub
. คำสั่งใดที่สามารถใช้เพื่อตรวจสอบความถูกต้องหากเป็นคู่ที่ถูกต้อง
คำตอบ:
ฉันต้องการssh-keygen -y -e -f <private key>
วิธีแทนคำตอบที่ยอมรับของคุณจะทดสอบกุญแจสาธารณะ DSA สาธารณะ / ส่วนตัวได้อย่างไร บน Stack Overflow
ssh-keygen -y -e -f <private key>
ใช้กุญแจส่วนตัวและพิมพ์รหัสสาธารณะที่เกี่ยวข้องซึ่งสามารถเปรียบเทียบได้โดยตรงกับกุญแจสาธารณะที่มีอยู่ของคุณ (คำแนะนำ: ระวังความคิดเห็นหรือตัวเลือกคีย์)
(มันทำยังไงกันเนี่ยฉันทำได้แค่หวังว่ากุญแจสาธารณะจะถูกเข้ารหัสโดยตรงหรือโดยอ้อมในกุญแจส่วนตัว ... )
ฉันต้องการสิ่งนี้เองและใช้ Bash one-liner ต่อไปนี้ มันจะไม่ส่งผลอะไรถ้ามีกุญแจอยู่ด้วยกัน ใช้ความ-q
แตกต่างเล็กน้อยกับสคริปต์และ diff ตั้งค่ารหัสส่งคืนอย่างเหมาะสมเท่านั้น
PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )
ssh-keygen -y -e -f id_rsa
จะไม่ตรวจสอบ id_rsa เลย แต่เพียงคืนค่าจาก id_rsa.pub เช่นถ้าคุณecho 5 > id_rsa
ลบคีย์ส่วนตัวทำ diff ต่าง diff จะผ่าน! นอกจากนี้การรันssh-keygen -yef foo
โดยที่ foo ไม่ใช่คีย์ที่ถูกต้อง (และไม่มี foo.pub ที่สอดคล้องกัน) จะบล็อกการรอการป้อนข้อมูลของผู้ใช้ดังนั้นควรใช้สคริปต์นี้อย่างระมัดระวัง
คำตอบที่ยอมรับอาจให้ผลลัพธ์ที่เป็นเท็จทั้งนี้ขึ้นอยู่กับตำแหน่งที่คุณได้รับไฟล์กุญแจสาธารณะที่คุณกำลังทดสอบ นี่เป็นเพราะพฤติกรรมที่อธิบายในความคิดเห็นโดย @drewbenn โดยเฉพาะเมื่อใช้ตัวเลือก -e กับไฟล์ไพรเวตคีย์เป็นพารามิเตอร์ตัวเลือก -f มันจะทำให้นกแก้ว (แต่ฟอร์แมตใหม่) สิ่งที่อยู่ในไฟล์กุญแจสาธารณะที่เกี่ยวข้อง
ในคำอื่น ๆ
ssh-keygen -y -f id_rsa
(เห็นได้ชัด) สร้างค่าคีย์สาธารณะและ
ssh-keygen -y -e -f id_rsa
เพียงและเอาท์พุท (และฟอร์แมต) ที่สำคัญในการที่มีอยู่ id_rsa.pub สิ่งที่มันเป็น
ในกรณีของฉันฉันต้องตรวจสอบว่าทั้งคู่ไม่ได้เสียหาย ดังนั้นฉันจึงตัดสินใจเปรียบเทียบสิ่งต่อไปนี้:
ssh-keygen -y -f id_rsa | cut -d' ' -f 2
กับ
cut -d' ' -f 2 id_rsa.pub
ดังนั้น:
diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)
บางทีนี่อาจจะไม่ยืดหยุ่น แต่ก็ดีสำหรับความต้องการของฉัน อาจช่วยคนอื่นได้
หากพวกเขาอยู่ในระบบท้องถิ่นของคุณติดid_rsa.pub
ในของคุณ$HOME/.ssh/authorized_keys
และssh
การlocalhost
ใช้id_rsa
กุญแจ ถ้ามันใช้งานได้
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost
ssh -v
ช่วยได้มากเช่นกัน