ssh-add रिबूट के बीच लगातार नहीं है


150

मैंने एजेंट को एक ssh कुंजी जोड़ा:

$ ssh-add ~/.ssh/id_rsa_mac
Identity added: /Users/alex/.ssh/id_rsa_mac (/Users/alex/.ssh/id_rsa_mac)

रिबूट के बाद एजेंट के पास यह कुंजी नहीं होती है:

$ ssh-add -l
The agent has no identities.

ऐसा क्यों हुआ?


मेरे पास अभी पूरी तरह से जवाब देने का समय नहीं है, लेकिन ssh मोड में gpg-agent वही करेगा जो आप चाहते हैं। कोशिश करें कि विरासत के बजाय ssh-Agent। अगर इससे मुझे समय मिलने पर मदद मिल सकती है और मैं इसका विस्तार कर सकता हूं।
वैलिट

@Vality: मुझे संदेह है कि gpg- एजेंट लगातार रिबूट के साथ होगा।
पावेल Paमेरडा

@ Pavel privateimerda यह उपयोगकर्ताओं के पासवर्ड के साथ निजी कुंजियों को एन्क्रिप्ट करता है और $HOME/.gnupg/private-keys-v1.dजैसे ही आप उन्हें ssh-add के साथ जोड़ते हैं। यह वास्तव में लगातार है। यह मानते हुए कि आपके पास एक गैर-वाष्पशील घर निर्देशिका है।
१६:३२ बजे वैलिट

@Vality: क्या इसे सुरक्षा मुद्दा नहीं माना जाना चाहिए? क्या आप बस पासफ़्रेज़ के बिना एक कुंजी का उपयोग नहीं कर सकते हैं और किसी एजेंट की आवश्यकता के बिना इसके साथ किया जा सकता है?
पावेल Paमेरडा

1
@ Pavel securityimerda यह वास्तव में एक सुरक्षा समस्या नहीं है क्योंकि कुंजी को उपयोगकर्ताओं के पासवर्ड के साथ एन्क्रिप्ट किया गया है, इसे अभी भी पासवर्ड की आवश्यकता होती है जब उपयोगकर्ता इसे डिक्रिप्ट करने के लिए लॉग इन करता है। कुंजी को अनएन्क्रिप्टेड स्टोर करने का मतलब है कि रूट (या एक चोर जो आपकी हार्ड डिस्क ले गया है) के साथ एक उपयोगकर्ता उन्हें अपने घर निर्देशिका से चुरा सकता है, gnupg के साथ अगर वे उन्हें चोरी करते हैं तो वे आपके पासवर्ड के साथ एन्क्रिप्टेड हो जाएंगे और इस तरह बेकार हो जाएंगे।
वैध

जवाबों:


174

एजेंट के लिए चाबियों का जोड़ क्षणिक है। वे केवल इतने लंबे समय तक चलते हैं जब तक एजेंट चल रहा है। यदि आप इसे मारते हैं या अपने कंप्यूटर को फिर से चालू करते हैं तो वे तब तक खो जाते हैं जब तक आप उन्हें फिर से नहीं जोड़ते। से ssh-agentआदमी पेज:

ssh-Agent सार्वजनिक कुंजी प्रमाणीकरण (RSA, DSA, ECDSA) के लिए उपयोग की जाने वाली निजी कुंजी रखने का एक कार्यक्रम है। विचार यह है कि ssh- एजेंट को X- सत्र या लॉगिन सत्र की शुरुआत में शुरू किया जाता है, और अन्य सभी विंडो या प्रोग्राम को ssh- एजेंट प्रोग्राम के क्लाइंट के रूप में शुरू किया जाता है। पर्यावरण चर के उपयोग के माध्यम से एजेंट को ssh (1) का उपयोग करके अन्य मशीनों में लॉग इन करते समय स्वचालित रूप से प्रमाणीकरण के लिए स्थित किया जा सकता है।

शुरू में एजेंट के पास कोई निजी चाबी नहीं होती है। Ssh-add (1) का उपयोग करके कुंजियाँ जोड़ी जाती हैं। जब तर्क के बिना निष्पादित, ssh-जोड़ने (1) फ़ाइलों कहते हैं ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsaऔर ~/.ssh/identity। यदि पहचान पासफ़्रेज़ है, तो ssh-add (1) टर्मिनल पर पासफ़्रेज़ के लिए पूछता है यदि उसके पास X11 के तहत चलने पर एक या एक छोटे X11 प्रोग्राम से है। यदि इनमें से कोई भी मामला नहीं है, तो प्रमाणीकरण विफल हो जाएगा। यह फिर एजेंट को पहचान भेजता है। एजेंट में कई पहचान संग्रहीत की जा सकती हैं; एजेंट स्वचालित रूप से इनमें से किसी भी पहचान का उपयोग कर सकता है। ssh-add -lएजेंट द्वारा वर्तमान में पहचान को प्रदर्शित करता है।

macOS सिएरा

MacOS सिएरा 10.12.2 के साथ शुरू , Apple ने SSH कॉन्फ़िगरेशन के लिए UseKeychain कॉन्फ़िगरेशन विकल्प जोड़ा है। आप इस सुविधा UseKeychain yesको अपने साथ जोड़कर सक्रिय कर सकते हैं ~/.ssh/config

Host *
  UseKeychain yes

OSX कीचेन

मैं OSX का उपयोग नहीं करता, लेकिन SuperUser शीर्षक पर यह Q & A पाया: मैक ओएस एक्स कीचेन को एसआरओ कीज के साथ कैसे उपयोग किया जाए?

मैं समझता हूं कि मैक ओएस एक्स तेंदुए के बाद से किचेन ने एसएसएच कुंजी का भंडारण करने का समर्थन किया है। क्या कोई यह बता सकता है कि यह सुविधा कैसे काम करने वाली है।

तो इसकी आवाज से आप इस कमांड का उपयोग करके किचेन में अपनी SSH कुंजी आयात कर सकते हैं:

$ ssh-add -K [path/to/private SSH key]

आपकी कुंजी तब बूट से बूट तक बनी रहनी चाहिए।

जब भी आप अपने मैक को रिबूट करते हैं, तो आपके किचेन में सभी एसएसएच कीज़ अपने आप लोड हो जाएंगे। आपको किचेन एक्सेस ऐप में चाबियाँ देखने में सक्षम होना चाहिए, साथ ही साथ कमांड लाइन से:

  ssh-add -l

स्रोत: सुपर यूजर - एसएसएच कुंजी के साथ मैक ओएस एक्स कीचेन का उपयोग कैसे करें?


वास्तव में? लिनक्स पर मेरे पास यह समस्या नहीं है। क्या मुझे हर बार अपने कंप्यूटर को पुनरारंभ करने के लिए "ssh-add my_key" करना पड़ता है?
ア ッ ク ア

2
@ एलेक्स जवाब के रूप में बताते हैं, एजेंट स्वचालित रूप से जोड़ता है ~/.ssh/id_rsa। मैं यह अनुमान लगा रहा हूं कि यह linux पर आपके कीफाइल का स्थान है। यह भी संभव है कि आप मानक ssh कुंजी एजेंट का उपयोग नहीं कर रहे हैं। कुछ अन्य भी हैं, जैसे कि सूक्ति-कीरिंग-डेमन, जिसका व्यवहार अलग हो सकता है।
पैट्रिक

लेकिन मैक पर इसे "id_rsa_mac" नाम दिया गया है। मैं एजेंट को अपने आप कैसे जोड़ूं?
ア ッ ク ア

@ पैट्रिक: मुझे यकीन नहीं है कि क्लासिक ssh-agentकिसी भी कुंजी को स्वचालित रूप से जोड़ता है। यदि आप एजेंट का उपयोग नहीं कर रहे हैं, तो मेरी राय में यह ssh-addमानक स्थानों या sshक्लाइंट को पढ़ता है ।
पावेल Paमेरडा

5
छोटे sidenote, यदि आपका ssh-add कमांड -K फ्लैग को नहीं पहचानता है जो आप शायद ssh-add के macports संस्करण का उपयोग कर रहे हैं ... आप ssh-add के OSX संस्करण के लिए पूर्ण पथ निर्दिष्ट करके macports संस्करण को बायपास कर सकते हैं इस तरह:/usr/bin/ssh-add -K /path/to/private/key
क्रिसर

20

ssh-agentएक है सत्र सेवा को अस्थायी रूप से कुंजी संग्रहीत करता है उपयोगकर्ता के लिए।

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

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

मानक स्थान मैनुअल पेज में सूचीबद्ध हैं ssh(1):

डिफ़ॉल्ट प्रोटोकॉल संस्करण 1 के लिए ~ /। Ssh / पहचान है, और प्रोटोकॉल संस्करण 2 के लिए ~ / .sh / id_dsa, ~ / .ssh / id_ecdsa, ~ / .ssh / id_ed25519 और ~ / .ssh / id_rsa है।

गैरमानक स्थानों का उपयोग करते समय, आप उसी मैनुअल पेज में वर्णित -iस्विच का उपयोग कर सकते हैं ssh, या आपके द्वारा उपयोग किए जा रहे एसएसएच क्लाइंट में संबंधित विकल्प।


4
+1 के गैर-उपयोग की वकालत करने के लिएssh-agent
dg99

7

में सियरा :

UseKeychain का उपयोग करें । (मैंने यह कोशिश नहीं की है, लेकिन यह सबसे सही समाधान की तरह लगता है।)

या

ssh-add -K /your/key
echo ssh-add -A | cat >> ~/.bash_profile

या करने के लिए अपील करने के बजाय एक plist फ़ाइल बनाएँ~/.bash_profile

अस्वीकरण: जैसा कि अन्य ने नोट किया है, मुझे नहीं पता कि किचेन में ssh पासफ्रेज को स्टोर करना कितना सुरक्षित है।


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