Ssh कुंजी कैसे निकालें?


154

वर्तमान में मेरे पास सर्वर पर एक पुरानी SSH कुंजी अपलोड है। समस्या यह है कि मैंने अपनी ~/.sshनिर्देशिका (मूल id_rsaऔर id_rsa.pubफ़ाइलों के साथ) खो दी है ।

नतीजतन, मैं सीधे सर्वर पर पुरानी एसएसएच कुंजी को हटाना चाहता हूं और एक नया अपलोड करना चाहता हूं।

मैंने सफलता के बिना निम्नलिखित आदेश की कोशिश की:

$> ssh-add -D

यहाँ छवि विवरण दर्ज करें

क्या SSH कुंजी को पूरी तरह से हटाने का एक तरीका है?


किसके साथ ssh-add -d?
user2196728

5
लानत, यह ssh-add -D है, अपरकेस
अलेक्जेंडर मिल्स

अपनी ssh- एजेंट (1) द्वारा उपयोग की जा रही अपनी सॉकेट्स की जाँच करें।
ड्वाइट स्पेंसर

जवाबों:


129

ध्यान दें कि चाबियाँ ssh-add -d/-D हटाने के लिए कम से कम दो बग रिपोर्ट हैं :

सटीक मुद्दा है:

ssh-add -d/-Dकेवल गनोम-कीरिंग से मैन्युअल रूप से जोड़े गए कुंजी को हटाता है ।
स्वचालित रूप से जोड़े गए कुंजियों को हटाने का कोई तरीका नहीं है।
यह मूल बग है, और यह अभी भी निश्चित रूप से मौजूद है।

इसलिए, उदाहरण के लिए, यदि आपके पास दो अलग-अलग लोड किए गए ssh पहचान हैं जो दो अलग-अलग GitHub खातों से जुड़े हैं - काम के लिए और घर के लिए कहें - उनके बीच स्विच करने का कोई तरीका नहीं है। GitHubtakes पहले वाले से मेल खाता है, इसलिए आप हमेशा GitHub के लिए अपने 'होम' उपयोगकर्ता के रूप में दिखाई देते हैं, काम की परियोजनाओं के लिए चीजों को अपलोड करने का कोई तरीका नहीं है।

स्वचालित रूप से लोड की गई कुंजियों के ssh-add -dलिए आवेदन करने की अनुमति (और स्वचालित रूप से लोड की गई कुंजियों ssh-add -t Xके जीवनकाल को बदलने के लिए), अधिकांश उपयोगकर्ताओं द्वारा अपेक्षित व्यवहार को बहाल करेगा।


समस्या के बारे में अधिक सटीक:

अपराधी है gpg-keyring-daemon:

  • यह ssh- एजेंट के सामान्य संचालन को प्रभावित करता है, ज्यादातर इसलिए कि यह एक सुंदर बॉक्स को पॉप कर सकता है जिसमें आप एन्क्रिप्टेड ssh कुंजी के लिए पासफ़्रेज़ टाइप कर सकते हैं।
  • और यह आपकी .sshनिर्देशिका के माध्यम से पंजे करता है , और स्वचालित रूप से आपके एजेंट को मिलने वाली किसी भी कुंजी को जोड़ता है।
  • और यह आपको उन कुंजियों को हटाने नहीं देगा।

हम इससे कैसे नफरत करते हैं? आइए गिनती न करें - जीवन बहुत छोटा है।

विफलता को कंपाउंड किया जाता है क्योंकि नए ssh क्लाइंट होस्ट से कनेक्ट करते समय स्वचालित रूप से आपके ssh- एजेंट की सभी कुंजियों को आज़माते हैं।
यदि बहुत अधिक हैं, तो सर्वर कनेक्शन को अस्वीकार कर देगा।
और जब से सूक्ति-कीरिंग-डेमन ने खुद के लिए तय किया है कि आप अपने ssh- एजेंट को कितनी चाबियां देना चाहते हैं, और उन्हें ऑटोलॉइड किया है, और आप उन्हें डिलीट नहीं करेंगे, आप टोस्ट हैं।

यह बग अभी भी Ubuntu 14.04.4 में पुष्टि की गई है, जैसा कि हाल ही में दो दिन पहले (21 अगस्त 2014)


एक संभावित समाधान:

  • क्या ssh-add -Dआपके सभी नष्ट करने के लिए मैन्युअल रूप से जोड़ा चाबियाँ। यह स्वचालित रूप से जोड़े गए कुंजियों को भी लॉक कर देता है, लेकिन बहुत अधिक उपयोग नहीं है क्योंकि gnome-keyringजब भी आप ए करने की कोशिश करेंगे, तो आप उन्हें वैसे भी अनलॉक करने के लिए कहेंगे git push
  • अपने ~/.sshफ़ोल्डर पर नेविगेट करें और अपनी सभी महत्वपूर्ण फ़ाइलों को छोड़ दें, एक को छोड़कर, जिसे आप बैकअप नामक एक अलग फ़ोल्डर में पहचानना चाहते हैं। यदि आवश्यक हो तो आप सीहोर भी खोल सकते हैं और वहां से चाबियाँ हटा सकते हैं।
  • अब आप git pushएक समस्या के बिना करने में सक्षम होना चाहिए ।

एक और समाधान:

आप वास्तव में क्या करना चाहते हैं, gpg-keyring-daemonपूरी तरह से बंद करना है । " " बॉक्स पर
जाएं System --> Preferences --> Startup Applicationsऔर अचयनित करें SSH Key Agent (Gnome Keyring SSH Agent)- आपको इसे खोजने के लिए नीचे स्क्रॉल करना होगा।

आपको अभी भी एक मिल जाएगा ssh-agent, केवल अब यह पूरी तरह से व्यवहार करेगा: कोई कुंजी नहीं ऑटोलॉइड, आप उन्हें जोड़ने के लिए ssh-add चलाते हैं, और यदि आप चाबियाँ हटाना चाहते हैं, तो आप कर सकते हैं। कल्पना करो कि।

यह टिप्पणी वास्तव में सुझाव देती है:

समाधान को gnome-keyring-managerकभी भी शुरू करने से रोकना है, जो प्रोग्राम फ़ाइल के निष्पादन की अनुमति को हटाकर अंततः कठिन था।


रयान ल्यू टिप्पणी में एक और दिलचस्प कोने मामले जोड़ता है :

मामले में यह किसी को भी मदद करता है: मैंने पूरी तरह से id_rsaऔर id_rsa.pubफ़ाइलों को हटाने की कोशिश की , और कुंजी अभी भी दिखाई दे रही थी।

पता चला कि gpg-agentउन्हें एक ~/.gnupg/sshcontrolफाइल में कैशिंग किया गया था ; मुझे उन्हें स्वयं वहां से हटाना पड़ा।

यही कारण है कि मामला है जब है जोड़ दिया गया है यहाँ के रूप मेंkeygrip


1
उबंटू 14-16 में एक अन्य विकल्प है कि 'पासवर्ड और कुंजी' का उपयोग करें (आप इसे खोजने के लिए ssh के लिए खोज कर सकते हैं)। OpenSS कीज को चुनें, फिर कुंजी पर राइट क्लिक करें और डिलीट को चुनें। आपको इसे देखने के लिए अपने सिस्टम को पुनः आरंभ करने की आवश्यकता हो सकती है।
user3257693

2
ssh-agentऔर ssh-addचयनित उत्तर के बारे में यह जानकारी क्यों है ? मूल पोस्टर ने कहा कि वह चाहता है remove the old SSH key directly on the server and upload a new one। ऐसा लगता है कि वह ~/.ssh/authorized_keysदूरस्थ होस्ट पर संपादन करना चाहता है ।
H2ONaCl

1
यह उत्तर मुझे ssh अग्रेषण सक्षम करने के साथ दिखने वाली समस्या को हल करने के लिए ले जाता है। उबंटू 16.04 मशीन से एक डेबियन सिस्टम पर जा रहे हैं, जहां सभी ssh क्रेडेंशियल्स को आगे भेजा जा रहा है, git cloneयह उबंटू बॉक्स पर मौजूद कॉन्फ़िगरेशन फाइल में वर्जन के बजाय चेन में पहली कुंजी का उपयोग कर रहा है । बुरी कुंजी स्वचालित रूप से चूसा जा रही थी और डेबियन बॉक्स को भेज दी गई।
5

1
यह रियर में एक वास्तविक दर्द है। मैं कंपनी की परियोजनाओं पर काम कर रहा हूं और दूसरी कंपनी के तहत काम करने के लिए अनुबंधित हूं। यह सिर्फ दोनों के प्रबंधन के लिए व्यर्थ समय जोड़ता है। मुझे उम्मीद है कि जल्द ही एक सुधार आ जाएगा!
जोशसुल्लीवन

1
मामले में यह किसी को भी मदद करता है: मैंने पूरी तरह से id_rsaऔर id_rsa.pubफ़ाइलों को हटाने की कोशिश की , और कुंजी अभी भी दिखाई दे रही थी। जीपीएस-एजेंट उन्हें एक ~/.gnupg/sshcontrolफाइल में कैशिंग कर रहे थे ; मुझे उन्हें स्वयं वहां से हटाना पड़ा।
रेयान लू

10

यदि आप ssh- संबंधित ऑपरेशन करने की कोशिश कर रहे हैं और निम्नलिखित त्रुटि प्राप्त करते हैं:

$ git fetch
no such identity: <ssh key path>: No such file or directory

आप निम्नलिखित के साथ अपने ssh एजेंट से लापता ssh कुंजी को हटा सकते हैं:

$ eval `ssh-agent -s`  # start ssh agent
$ ssh-add -D <ssh key path>  # delete ssh key

9

जब तक मैं गलत नहीं समझ रहा हूँ, आपने अपनी .sshनिर्देशिका खो दी है जिसमें आपकी निजी कुंजी आपकी स्थानीय मशीन पर है और इसलिए आप सार्वजनिक कुंजी को हटाना चाहते हैं जो सर्वर पर थी और जिसने कुंजी-आधारित लॉगिन की अनुमति दी थी। उस स्थिति में, यह .ssh/authorized_keysसर्वर पर आपके होम डायरेक्टरी में फ़ाइल में संग्रहीत किया जाएगा । आप इस फाइल को एक टेक्स्ट एडिटर के साथ एडिट कर सकते हैं और संबंधित लाइन को हटा सकते हैं यदि आप इसे पहचान सकते हैं (भले ही यह केवल प्रविष्टि है!)। मुझे उम्मीद है कि कुंजी सर्वर तक पहुंचने की आपकी एकमात्र विधि नहीं थी और आपके पास फ़ाइल को लॉग इन करने और संपादित करने का कोई और तरीका है। आप या तो authorised_keysफ़ाइल या उपयोग करने के लिए एक नई सार्वजनिक कुंजी जोड़ सकते हैं ssh-copy-id। किसी भी तरह से, आपको सर्वर पर अपने खाते के लिए पासवर्ड की स्थापना की आवश्यकता होगी, या किसी अन्य पहचान या एक्सेस विधि को प्राप्त करने के लिएauthorized_keys सर्वर पर फ़ाइल पर ।

ssh-addअपने ssh एजेंट की पहचान जोड़ता है जो स्थानीय स्तर पर आपकी पहचान के प्रबंधन को संभालता है और "एजेंट का कनेक्शन SSH दूरस्थ लॉगिन पर भेजा जाता है, और उपयोगकर्ता इस प्रकार नेटवर्क में कहीं भी पहचान द्वारा दिए गए विशेषाधिकारों का उपयोग सुरक्षित तरीके से कर सकता है।" (मैन पेज), तो मुझे नहीं लगता कि आप इस मामले में क्या चाहते हैं। आपके पास एक सर्वर पर अपनी सार्वजनिक कुंजी प्राप्त करने का कोई तरीका नहीं है, क्योंकि आपके पास एक ssh लॉगिन के माध्यम से उस सर्वर तक पहुंच है जहां तक ​​मैं जानता हूं।


मैंने यह फ़ाइल हटा दी है और मैं अभी भी कनेक्ट कर सकता हूं। तो यह निश्चित रूप से यहां निहित नहीं था ... यह एक स्वचालित रूप से जोड़ा गया कुंजी था, लेकिन अभी भी कहीं भी मौजूद नहीं है।
लैरी

5

मैंने अपनी एकता में "पासवर्ड और कुंजी" एप्लिकेशन को खोला और सुरक्षित कुंजी से अवांछित कुंजियों को हटा दिया -> ओपनएसएसएच कुंजी और वे स्वचालित रूप से एसश-एजेंट-एल से भी हटा दिए गए थे ।


2
खबरदार कि यह भी उन्हें निर्देशिका से हटा देता है~/.ssh
पीटर वी। मॉर्क

1

मैं पुष्टि कर सकता हूं कि यह बग अभी भी उबंटू 19.04 में मौजूद है। @VonC द्वारा सुझाए गए वर्कअराउंड ने पूरी तरह से काम किया, मेरे संस्करण के लिए संक्षेप:

  • ऊपरी बाएँ कोने पर क्रियाएँ टैब पर क्लिक करें
  • जो खोज बॉक्स आता है, उस पर "स्टार्टअप एप्लिकेशन" लिखना शुरू करें
  • "स्टार्टअप एप्लिकेशन" आइकन पर क्लिक करें
  • पॉप अप करने वाले बॉक्स पर, गनोम की रिंग मैनेजर एप्लिकेशन का चयन करें (GUI पर सटीक नाम याद नहीं कर सकता है लेकिन यह पर्याप्त विशिष्ट है) और इसे हटा दें।

आगे मैंने जो किया वह ssh-add -Dफिर से कोशिश करने के लिए था , और रिबूट के बाद ssh-add -lमुझे बताया कि एजेंट की कोई पहचान नहीं है। मैंने पुष्टि की कि मैं अभी भी ssh-agentडेमॉन के साथ चल रहा था ps aux | grep agent। इसलिए मैंने कुंजी को सबसे अधिक बार GitHub के साथ उपयोग किया (ssh-add ~/.ssh/id_ecdsa ) के और सब अच्छा है!

अब मैं अपने सबसे अधिक बार उपयोग किए जाने वाले भंडार के साथ सामान्य ऑपरेशन कर सकता हूं, और अगर मुझे कभी-कभी अन्य रिपॉजिटरी तक पहुंच की आवश्यकता होती है जो आरएसए कुंजी का उपयोग करता है, तो मैं इसके लिए केवल एक टर्मिनल समर्पित करता हूं export GIT_SSH_COMMAND="ssh -i /home/me/.ssh/id_rsa.pub"। हल किया! बग और समाधान को इंगित करने के लिए क्रेडिट @VonC को जाता है।


1

आपके सिस्टम में .ssh कुंजी या नहीं की जाँच करें

  1. फ़ोल्डर पर जाएं -> /Users/administrator/.ssh/id_ed25519.pub

यदि नहीं

  1. टर्मिनल खोलें।

टर्मिनल में अतीत

  1. उपयोगकर्ता की जाँच करें -> ssh -T git@gitlab.com

मौजूदा .ssh कुंजी निकालें

  1. मौजूदा .ssh कुंजी -> rm ~ / .sh / github_rsa.pub निकालें

नया बनाओ

  1. नई .ssh कुंजी बनाएं -> ssh-keygen -t rsa -b 4096 -C "your_email@nample_fi"

  2. सार्वजनिक कुंजी को "/Users/administrator/.ssh/id_ed25519.pub" में सहेजा गया है

  3. सार्वजनिक कुंजी सहेजा गया मार्ग खोलें।
  4. .Ssh कुंजी कॉपी करें -> गिटलैब खाता -> सेटिंग -> एसएसएच कुंजी -> कुंजी जोड़ें
  5. टर्मिनल से दोबारा टेस्ट करें -> ssh -T git@gitlab.com

0

मेरे लिए समाधान (ओपनस्यूप लीप 42.3, केडीई) फ़ोल्डर का नाम बदलना था ~/.gnupgजिसमें स्पष्ट रूप से कैश की गई चाबियां और प्रोफाइल शामिल थे। केडीई लॉगआउट / लॉगऑन के बाद ssh-add / Agent फिर से चल रहा है और फ़ोल्डर को स्क्रैच से बनाया गया है, लेकिन पुरानी चाबियाँ सभी चले गए हैं।

मुझे अन्य तरीकों से सफलता नहीं मिली।

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