क्या GPG और SSH कुंजियाँ विनिमेय हैं?


70

मैं लॉगिन RSAमें एक कुंजी उत्पन्न करना चाहता हूं GPGऔर उसका उपयोग करना चाहता हूं SSH। क्या यह भी संभव है? यदि हां, तो कैसे?

संपादित करें: देखें @ wwerner का उत्तर, मैंने इसे आज़माया नहीं, लेकिन यह वर्तमान समाधान (2018 तक) प्रतीत होता है

जवाबों:


26

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन मेरे जैसे लोगों के लिए इस पर ठोकर खाना:

अब यह (gpg 2.1 के बाद से) संभव है कि सीधे ssh कुंजियों को सीधे gpg का उपयोग करके निकाला जाए gpg --export-ssh-key <key id>!:।

!मार्क वैकल्पिक है, यह प्राथमिक कुंजी निर्यात करने योग्य बनाता है और जाँच को छोड़ देता है कि क्या कुंजी प्रमाणीकरण सक्षम ([सीए]) है।

विवरण:


यह उत्तर स्वीकृत होना चाहिए। :)
इंकेलिज़

30

मैं इस विषय के बारे में कुछ शोध कर रहा हूं और मैं आपको कुछ संकेत दे सकता हूं, लेकिन मुझे इसे अभी तक काम करने का कोई तरीका नहीं मिला है।

Monkeysphere

मंकीस्फेयर एक बहुत ही दिलचस्प परियोजना लगती है, लेकिन मैं मैक ओएस एक्स के तहत मैकपार्ट्स के साथ मेरी थोड़ी फ्री डिस्क स्पेस को बंद किए बिना इसे संकलित करने में सक्षम नहीं हूं।

Gpgkey2ssh का उपयोग करना

पहला तरीका जो मैं आपको सुझाता हूं, वह है आपकी कुंजी आईडी (जैसे BFB2E5E3) से संगत अधिकृत_की प्रविष्टि उत्पन्न करना

gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys

यहाँ मैंने इसे अपने लोकलहोस्ट में जोड़ा क्योंकि मैंने परीक्षण उद्देश्यों के लिए एक 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

लेकिन मुझे नहीं लगता कि यह कभी काम करेगा। GPG-एजेंट मैनपेज का कहना है:

SSH कीज़, जिन्हें एजेंट के माध्यम से उपयोग किया जाना है, को शुरू में ssh-add उपयोगिता के माध्यम से gpg- एजेंट में जोड़ा जाना चाहिए। जब कोई कुंजी जोड़ी जाती है, तो ssh-add प्रदान की गई फ़ाइल का पासवर्ड पूछेगा और एजेंट को असुरक्षित कुंजी सामग्री भेजेगा; यह gpg- एजेंट को एक पासफ़्रेज़ के लिए पूछने का कारण बनता है, जिसका उपयोग नई प्राप्त कुंजी को एन्क्रिप्ट करने और इसे gpg- एजेंट विशिष्ट निर्देशिका में संग्रहीत करने के लिए किया जाता है।

तो ऐसा लगता है कि gpg-agentएक GPG एन्क्रिप्शन के साथ अपने SSH कुंजी की सुरक्षा के लिए एक अतिरिक्त उपाय के रूप में उपयोग किया जाना चाहिए।

OpenSSH के लिए एक 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 के पास -IPKCS # 11 साझा लाइब्रेरी को निर्दिष्ट करने के लिए एक विकल्प sshहोना चाहिए जो PKCS # 11 टोकन के साथ संचार करने के लिए उपयोगकर्ता की निजी RSP कुंजी प्रदान करता है। ssh-keygenRSS4716 / SSH2 सार्वजनिक या निजी कुंजी, PEM PKCS8 सार्वजनिक कुंजी, और PEM सार्वजनिक कुंजियों का उपयोग OpenSSH संगत निजी (या सार्वजनिक) कुंजी -iऔर -mविकल्पों का उपयोग करने के लिए कर सकते हैं।

फिर भी मुझे इसे एक साथ रखने का कोई तरीका नहीं मिल रहा है।


5
ध्यान दें कि संस्करण 2.1.11 (2016-01-26) के रूप gpgkey2sshमें बदल दिया गया है --export-ssh-key। इसे महसूस करने में मुझे थोड़ा समय लगा। उपयोग है gpg --export-ssh-key BFB2E5E3
मेयूलक


Linode पर एक अच्छी पोस्ट है, लेकिन उन्होंने SSH के साथ प्रमाणित करने के लिए gpg-Agent का उपयोग किया है। वे gpg गुप्त कुंजी को SSH निजी कुंजी में नहीं बदलते हैं।
Xorax

14

नहीं, वे विनिमेय नहीं हैं। हां, प्रमाणीकरण के लिए GPG कुंजी का उपयोग करना संभव है - बंदरों के पैकेज में आपके GPG प्रमाणपत्र से कच्चे RSA कीपेयर निकालने के उपकरण हैं।

  1. आपके GPG प्रमाणपत्र को "प्रमाणीकरण" क्षमता ध्वज के साथ एक उपकुंजी की आवश्यकता होगी। ऐसा उपकुंजी बनाने के लिए, एक बार चलाएं:

    monkeysphere g
    
  2. अब अपने प्रमाणीकरण उपकुंजियों को ssh- Agent में जोड़ें :

    monkeysphere s
    

कुछ हद तक प्रासंगिक: यह gnupg- उपयोगकर्ता धागा


9

इस सवाल के जवाब से जानकारी और gnupg-users मेलिंगलिस्ट की मदद से मैं यह पता लगाने में सक्षम था कि SSH प्रमाणीकरण के लिए अपनी GPG कुंजी का उपयोग कैसे करें। जैसा कि पहले से ही क्लाउडियो फ्लोरिनी ने अपने जवाब में उल्लेख किया है, ऐसा करने के लिए कुछ संभावित तरीके हैं।

मैंने कुछ संभावित समाधानों के बारे में एक ब्लॉगपोस्ट लिखा है: http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key

संक्षेप में: या तो आप GnuPG 2.1 का उपयोग करें, जो वर्तमान में बीटा में है। इस संस्करण का उपयोग करते समय, आप बस gpg-एजेंट को --enable-ssh-support विकल्प के साथ शुरू कर सकते हैं और आपके लिए keygrip को GPG कुंजी (या उपकुंजी) में जोड़ सकते हैं ~ / .gnupg / sshcontrol।

जब आप वर्तमान स्थिर GnuPG संस्करण (2.0.x) का उपयोग कर रहे हैं, तो आप gpg- एजेंट में अपनी कुंजी जोड़ने के लिए बंदरों का उपयोग कर सकते हैं (फिर से, - gen-Agent को --enable-ssh-support विकल्प के साथ शुरू करने के बाद)।

बंदरों की सहायता से GNOME कीरिंग (या नियमित ssh- एजेंट) का उपयोग करना भी संभव है। इस मामले में एकमात्र समस्या यह है कि आपको फिर से लॉग इन करते समय अपनी कुंजी को जोड़ना होगा (Gnome या XFCE में)। इसे हल करने के लिए आप मैन्युअल रूप से अपनी कुंजी निर्यात कर सकते हैं और इसे परिवर्तित कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.