GPG एजेंट कीरिंग से मेरी SSH कुंजी को नहीं हटाता है


14

मुझे वास्तव में परेशान करने वाली समस्या है। मैं gpg-agentअपनी कीहिंग से अपनी SSH कुंजी नहीं निकाल सकता और यह कई रिबूट के बाद भी बनी रहती है।

$ ssh-add -D
SSH_AGENT_FAILURE
Failed to remove all identities.

यहां तक ​​कि जब मैं इसे पहचान को हटाने के लिए कहता हूं:

$ ssh-add -d /path/to/private/key
Identity removed: /path/to/private/key

मैं तो देखता हूं

$ ssh-add -l
4096 1b:cb:52:a6:e5:13:e6:78:14:12:92:8f:34:8f:92:88 /path/to/private/key

और यह अभी भी वहाँ है।

यह कहाँ कैश किया जा रहा है? ऐसा लगता है कि किसी कारण से डिस्क पर लिखा जा रहा है, जो एसएसएच एजेंट के लिए एक डरावनी बात है। मैं शुरू करने के लिए निम्नलिखित चला रहा हूं gpg-agent:

gpg-agent --enable-ssh-support --daemon 

बाकी सब कुछ ठीक काम करता है, लेकिन यह इस फाइल को कहीं और कैशिंग कर रहा है और मुझे इसे हटाने की आवश्यकता है।

जवाबों:


15

अधिकांश चीजों जैसे कि GPG, ssh क्रेडेंशियल्स को .gnupgनिर्देशिका के अंदर कैश किया जाता है , विशेष रूप से ~/.gnupg/sshcontrol, जो कुछ इस तरह दिखाई देगा:

# List of allowed ssh keys.  Only keys present in this file are used
# in the SSH protocol.  The ssh-add tool may add new entries to this
# file to enable them; you may also add them manually.  Comment
# lines, like this one, as well as empty lines are ignored.  Lines do
# have a certain length limit but this is not serious limitation as
# the format of the entries is fixed and checked by gpg-agent. A
# non-comment line starts with optional white spaces, followed by the
# keygrip of the key given as 40 hex digits, optionally followed by a
# the caching TTL in seconds and another optional field for arbitrary
# flags.   Prepend the keygrip with an '!' mark to disable it.

# Key added on: 2013-09-19 22:15:50
# Fingerprint:  8b:56:b0:3f:c8...
681BF1EFF... 0
# Key added on: 2013-09-20 17:14:36
# Fingerprint:  4b:cb:7e:b0:d7...
F7BCEBD1C... 0

जैसा कि टिप्पणी कहती है, आप उन्हें हटाकर कुंजी निकाल सकते हैं, या उन्हें एक के साथ अक्षम कर सकते हैं !। मैंने परीक्षण नहीं किया है, लेकिन मुझे लगता है कि एक कुंजी को "अक्षम" करने का मतलब है कि आप फ़ाइल को संपादित किए बिना इसे स्पष्ट रूप से सक्षम या जोड़ नहीं सकते हैं।


1
ये सिर्फ प्रमुख उंगलियों के निशान हैं। अभी भी ~ / .gnupg / Private-keys-v1.d /
dlitz

लेकिन वे अब ssh एजेंट को दिखाई नहीं देते हैं।
लार्क्स

14

हाँ, ऐसा लगता है कि ssh -dgpg के एजेंट से टूट गया है। यहां एक अलग कमांड का उपयोग करके वर्कअराउंड किया गया है।

gpg-connect-agentएजेंट से कनेक्ट करने के लिए कमांडलाइन से कमांड चलाएँ । फिर, वहाँ संकेतों से, ssh कुंजी को सूचीबद्ध करने के लिए इस कमांड को दर्ज करें

KEYINFO --ssh-list --ssh-fpr

आपको कुछ इस तरह देखना चाहिए:

S KEYINFO 3365433C34421CC53B52C9A82169FD2328CF610B D - - - P df:a2:36:8d:ad:88:b3:cc:00:96:10:d4:c9:2c:e0:df - S
OK

अब, एजेंट से निकालने के लिए:

DELETE_KEY 3365433C34421CC53B52C9A82169FD2328CF610B

यह कहेगा:

OK

अब, BYE कमांड से बाहर निकलें:

BYE ओके क्लोजिंग कनेक्शन

अब, के साथ सत्यापित करें ssh-add -lऔर आप देखेंगे कि यह असली के लिए चला गया है।


DELETE_KEY <id>फ़ाइल कहाँ से आई है, इसके बारे में अधिक जानकारी देने के बाद मुझे एक संकेत मिला ... यह जानने के लिए उपयोगी था कि कौन सी कुंजी थी
सैम मेसन

1

यदि आप इसके लिए एक स्क्रिप्ट चाहते हैं:

keys=$(gpg-connect-agent 'keyinfo --list' /bye | awk '{print $3}' | head -n -1)
for key in $keys; do gpg-connect-agent "delete_key $key --force" /bye; done

मैं यहां विशेषज्ञ नहीं हूं, इसलिए मैं केवल एक सरल स्क्रिप्ट दे रहा हूं जिसका मैं उपयोग करता हूं। कुछ भी आकर्षक नहीं। कुछ भी गहरा नहीं।

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