ฉันต้องการสร้างRSA
รหัสGPG
และใช้ในการSSH
เข้าสู่ระบบ เป็นไปได้ไหม ถ้าเป็นเช่นนั้นได้อย่างไร
แก้ไข: ดูคำตอบ @ wwerner ของฉันไม่ได้ลอง แต่ดูเหมือนจะเป็นทางออกปัจจุบัน (ณ ปี 2018)
ฉันต้องการสร้างRSA
รหัสGPG
และใช้ในการSSH
เข้าสู่ระบบ เป็นไปได้ไหม ถ้าเป็นเช่นนั้นได้อย่างไร
แก้ไข: ดูคำตอบ @ wwerner ของฉันไม่ได้ลอง แต่ดูเหมือนจะเป็นทางออกปัจจุบัน (ณ ปี 2018)
คำตอบ:
ฉันรู้ว่านี่เป็นโพสต์เก่า แต่สำหรับคนอย่างฉันสะดุดนี้
ตอนนี้มันเป็น (ตั้งแต่ gpg 2.1) เป็นไปได้ที่จะเพียงแค่ดึงกุญแจ SSH
gpg --export-ssh-key <key id>!
โดยตรงโดยใช้จีพีจี:
!
เครื่องหมายเป็นตัวเลือกก็จะทำให้คีย์หลักที่ส่งสินค้าออกและละเว้นการตรวจสอบว่าที่สำคัญคือการตรวจสอบที่มีความสามารถ ([CA])
รายละเอียด:
ฉันกำลังทำวิจัยเกี่ยวกับหัวข้อนี้และฉันสามารถให้คำแนะนำแก่คุณ แต่ฉันยังไม่พบวิธีที่จะทำให้การทำงาน
Monkeysphereดูเหมือนจะเป็นโครงการที่น่าสนใจมาก แต่ฉันไม่สามารถคอมไพล์ได้ใน Mac OS X โดยไม่อุดตันพื้นที่ว่างในดิสก์ของฉันกับ MacPorts
วิธีแรกที่ฉันแนะนำให้คุณลองคือสร้างรายการ authorized_keys ที่เข้ากันได้จากรหัสคีย์ของคุณ (เช่น BFB2E5E3) ด้วย
gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys
นี่ฉันเพิ่มไปยัง localhost ของฉันตั้งแต่ฉันวิ่งเซิร์ฟเวอร์ SSH สำหรับวัตถุประสงค์ในการทดสอบ ~/.ssh/authorized_keys
แต่แน่นอนคุณควรเพิ่มนี้ไปยังพื้นที่เป้าหมาย ต่อไปคุณจะต้องบอก SSH ให้ใช้ส่วนส่วนตัวของคีย์นี้ในระหว่างการตรวจสอบสิทธิ์ แต่เพียงส่งออกคีย์แพร์รุ่น ASCII ที่หุ้มเกราะไม่ทำงาน:
gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
gpg --armor --export BFB2E5E3! | tee ~/.ssh/id_rsa.pub
chmod 400 ~/.ssh/id_rsa
ssh localhost
gpg-agent
มีตัวเลือกที่ช่วยให้สามารถใช้งานได้เป็นแทนหล่นในสำหรับที่รู้จักกันดี--enable-ssh-support
ssh-agent
ฉันได้อ่านบางคนที่พยายามเพิ่มผ่านทางssh-add
คีย์ GPG ของพวกเขาหลังจากเปิดตัวgpg-agent
ด้วยวิธีนี้:
gpg-agent --enable-ssh-support --daemon
gpg --armor --export-secret-key BFB2E5E3! | tee ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
ssh-add ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
แต่ฉันไม่คิดว่าสิ่งนี้จะได้ผล manpage gpg ตัวแทนพูดว่า:
คีย์ SSH ซึ่งจะใช้งานผ่านเอเจนต์จำเป็นต้องเพิ่มในเอเจนต์ gpg เริ่มแรกผ่านยูทิลิตี ssh-add เมื่อคีย์ถูกเพิ่ม ssh-add จะถามรหัสผ่านของไฟล์คีย์ที่ให้ไว้และส่งวัสดุสำคัญที่ไม่มีการป้องกันไปยังเอเจนต์ สิ่งนี้ทำให้ gpg-agent ขอ passphrase ซึ่งจะใช้สำหรับการเข้ารหัสคีย์ที่ได้รับใหม่และเก็บไว้ในไดเรกทอรีเฉพาะ gpg-agent
ดังนั้นมันจึงดูเหมือนว่าgpg-agent
ควรจะใช้เป็นมาตรการเพิ่มเติมเพื่อปกป้องกุญแจ SSH ของคุณด้วยการเข้ารหัส GPG
Jérôme Pouiller ในบล็อกของเขาเขียนว่ายูทิลิตี้ Gpgsm สามารถส่งออกคีย์และใบรับรองใน PCSC12; พวกเขาสามารถใช้งานได้โดย OpenSSH:
gpgsm -o secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX
openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem
chmod 600 gpg-key.pem
cp gpg-key.pem ~/.ssh/id_rsa
ssh-keygen -y -f gpg-key.pem > ~/.ssh/id_rsa.pub
แต่ฉันไม่พบวิธีที่จะgpgsm
ยอมรับคู่กุญแจ gpg ของฉัน
SSH มี-I
ตัวเลือกเพื่อระบุไลบรารีที่แบ่งใช้ PKCS # 11 ที่ssh
ควรใช้เพื่อสื่อสารกับโทเค็น PKCS # 11 ที่จัดเตรียมคีย์ RSA ส่วนตัวของผู้ใช้
ssh-keygen
สามารถใช้คีย์สาธารณะหรือไพรเวต RFC4716 / SSH2, คีย์สาธารณะ PEM PKCS8 และกุญแจสาธารณะ PEM เพื่อสร้างคีย์ส่วนตัว (หรือพับลิก) ที่รองรับ OpenSSH โดยใช้ตัวเลือก-i
และ-m
ตัวเลือก
ถึงกระนั้นฉันก็ไม่สามารถหาวิธีที่จะรวมมันเข้าด้วยกันได้
gpgkey2ssh
ถูกแทนที่ด้วย--export-ssh-key
เป็นเวอร์ชัน 2.1.11 (2016-01-26) ฉันใช้เวลาสักพักกว่าจะรู้เรื่องนี้ gpg --export-ssh-key BFB2E5E3
การใช้งาน
ไม่พวกเขาไม่สามารถแลกเปลี่ยนกันได้ ใช่เป็นไปได้ที่จะใช้คีย์ GPG สำหรับการตรวจสอบสิทธิ์ - แพคเกจMonkeysphereมีเครื่องมือในการแยกคีย์แพร์ RSA ดิบออกจากใบรับรอง GPG ของคุณ
ใบรับรอง GPG ของคุณจะต้องมีคีย์ย่อยที่มีการตั้งค่าสถานะ "การรับรองความถูกต้อง" ในการสร้างคีย์ย่อยให้รันหนึ่งครั้ง:
monkeysphere g
ตอนนี้เพิ่มคีย์ย่อยการรับรองความถูกต้องของคุณไปยังssh-agent :
monkeysphere s
ค่อนข้างเกี่ยวข้อง: ผู้ใช้ gnupg เธรดนี้
ด้วยข้อมูลจากคำตอบของคำถามนี้และความช่วยเหลือของรายชื่อผู้รับจดหมาย gnupg- ผู้ใช้ฉันสามารถหาวิธีใช้คีย์ GPG ของฉันสำหรับการรับรองความถูกต้อง SSH ดังที่ Claudio Floreani ได้กล่าวถึงแล้วในคำตอบของเขามีวิธีที่เป็นไปได้สองสามประการในการทำเช่นนี้
ฉันได้เขียน blogpost เกี่ยวกับวิธีแก้ปัญหาที่เป็นไปได้: http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key
ในการสรุป: ไม่ว่าคุณจะใช้ GnuPG 2.1 ซึ่งขณะนี้อยู่ในช่วงเบต้า เมื่อใช้รุ่นนี้คุณสามารถเริ่มต้น gpg-agent ด้วยตัวเลือก --enable-ssh-support และเพิ่ม keygrip สำหรับคีย์ GPG ของคุณ (หรือคีย์ย่อย) ลงใน ~ / .gnupg / sshcontrol
เมื่อคุณใช้ GnuPG เวอร์ชันเสถียร (2.0.x) ปัจจุบันคุณสามารถใช้ monkeysphere เพื่อเพิ่มคีย์ของคุณใน gpg-agent (อีกครั้งหลังจากเริ่ม gpg-agent ด้วยตัวเลือก --enable-ssh-support)
นอกจากนี้ยังเป็นไปได้ที่จะใช้พวงกุญแจ GNOME (หรือแม้แต่ตัวแทนทั่วไป ssh) ด้วยความช่วยเหลือของลิงสเฟียร์ ปัญหาเดียวในกรณีนี้คือคุณจะต้องเพิ่มคีย์ของคุณอีกครั้งเมื่อเข้าสู่ระบบอีกครั้ง (เป็น Gnome หรือ XFCE) ในการแก้ปัญหานี้คุณสามารถส่งออกคีย์และแปลงด้วยตนเอง