จะใช้ gpg และ SSH ร่วมกันได้อย่างไร? [ซ้ำ]


11

เป็นไปได้ซ้ำ:
ปุ่ม GPG และ SSH สามารถใช้ร่วมกันได้หรือไม่

จะใช้ gpg และ SSH ร่วมกันได้อย่างไร?

ฉันรู้ขั้นตอนพื้นฐานของ 1) การใช้ gpg เพื่อเข้ารหัสและถอดรหัสไฟล์ข้อความและ 2) การสร้างและใช้คีย์ SSH เพื่อเข้าถึงเซิร์ฟเวอร์ระยะไกลโดยไม่ต้องใช้รหัสผ่าน

ฉันสงสัยว่าทั้งสองสามารถรวมเข้าด้วยกันได้หรือไม่ ทั้งสองไม่เกี่ยวข้องกันและควรแยกในการใช้งานแบบวันต่อวันหรือไม่

คำตอบ:


7

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

Monkeysphere

Monkeysphereดูเหมือนจะเป็นโครงการที่น่าสนใจมาก แต่ฉันไม่สามารถคอมไพล์มันใน Mac OS X ได้โดยไม่อุดตันพื้นที่ว่างในดิสก์ของฉันกับ MacPorts

ใช้ gpgkey2ssh

วิธีแรกที่ฉันแนะนำให้คุณลองทำคือสร้างรายการ 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

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 ขอรหัสผ่านซึ่งจะใช้สำหรับการเข้ารหัสคีย์ที่ได้รับใหม่และเก็บไว้ในไดเรกทอรีเฉพาะของ gpg-agent

ดังนั้นจึงgpg-agentควรใช้มาตรการเพิ่มเติมเพื่อปกป้องคีย์ SSH ของคุณด้วยการเข้ารหัส GPG

การแปลงคีย์ GPG เป็น OpenSSH

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ตัวเลือก

ถึงกระนั้นฉันก็ไม่สามารถหาวิธีที่จะรวบรวมมันเข้าด้วยกัน


1
สำหรับการอ้างอิงในอนาคตหากคุณพบสองคำถามที่เหมือนกันเป็นหลักคุณสามารถตั้งค่าสถานะคำถามเหล่านั้นซ้ำกัน (ใช้flagลิงก์ใต้คำถาม) แทนที่จะโพสต์คำตอบเดียวกันสองครั้ง ขอบคุณสำหรับการตอบสนองอย่างละเอียดว่า!
nhinkle

ขออภัยฉันไม่รู้เกี่ยวกับคุณสมบัตินี้ ขอบคุณ
Claudio Floreani

2
gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsaผมไม่แน่ใจว่าสิ่งที่คุณกำลังพยายามที่จะบรรลุด้วย คุณใช้teeเพื่อให้คุณสามารถเห็นผลลัพธ์หรือไม่ เอาต์พุตของคำสั่งนี้ไม่เหมาะสำหรับการใช้งานโดยssh-add; สร้างid_rsaไฟล์ไม่สามารถโหลดลงอย่างใดอย่างหนึ่งssh-agentหรือไม่ก็สามารถนำมาใช้โดยตรงgpg-agent ssh
larsks


2

ในทางเทคนิคมีคีย์ PGP สามารถใช้สำหรับการตรวจสอบความถูกต้องของ SSH สิ่งที่ผู้คนเรียกว่า "คีย์ PGP" นั้นมีใบรับรองมากกว่าซึ่งประกอบด้วย RSA, ECDSA หรือคีย์แพร์อื่น ๆ (คีย์หลักและคีย์ย่อย) พร้อมกับข้อมูลเมตาของใบรับรอง ในความเป็นจริงมีแม้กระทั่งการตั้งค่าสถานะการใช้ "การรับรองความถูกต้อง"

ไม่แนะนำให้ใช้คีย์เดียวกันสำหรับวัตถุประสงค์หลายอย่าง อย่างไรก็ตามสิ่งนี้สามารถแก้ไขได้อย่างง่ายดายเนื่องจากคุณสามารถเพิ่มคีย์ย่อยเฉพาะการรับรองความถูกต้องให้กับใบรับรอง PGP ของคุณ (ผ่านgpg --expert --edit-key) คุณจะมีคีย์หลักหนึ่งเซ็น / รับรองคีย์ย่อยการเข้ารหัสและคีย์ย่อยการรับรองความถูกต้อง

แต่ในทางปฏิบัติฉันไม่สามารถเข้าใจวิธีการรับรองความถูกต้องโดยใช้คีย์ PGP โดยตรงแม้ว่าฉันจะขี้เกียจเกินกว่าที่จะลองใช้แนวคิดหลายอย่าง ชุด Monkeysphere มีเครื่องมือในการเพิ่มคีย์ย่อยการรับรองความถูกต้อง GPG ของคุณให้กับ ssh-agent น่าจะง่าย แต่ควรมีโพสต์ของผู้ใช้ที่อายุมากกว่าสองสามคนในเรื่องนี้


ขอบคุณสำหรับข้อมูล. มันมีประโยชน์ แต่ไม่เพียงพอสำหรับการตอบคำถามของฉัน ฉันยังไม่รู้วิธีรวมใบรับรอง PGP และคีย์ SSH ของฉัน
qazwsx

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