मैं अपनी SSH निजी कुंजी को किचेन में स्थायी रूप से कैसे जोड़ सकता हूं ताकि यह स्वतः ssh के लिए उपलब्ध हो?


419

ऐसा लगता है कि ssh-add -K ~/.ssh/id_rsaआपकी कुंजी लोड हो जाएगी, लेकिन हर बार जब आप रिबूट करेंगे तो पासवर्ड पूछेंगे।

मैं एक ऐसे समाधान की तलाश में हूं जिससे मुझे लॉगिन के बीच कुंजी पासवर्ड को फिर से दर्ज करने की आवश्यकता न हो।


1
क्या आप पासवर्ड प्रॉम्प्ट आपके लिए आने पर थोड़ा और कह सकते हैं? मैं पूछता हूं क्योंकि मेरे पास एक दूरस्थ सर्वर के लिए एक ssh-key है, जो मुझे विश्वास दिलाता है कि आप मेरे मैक लॉगिन पासवर्ड या कुछ भी समान नहीं हैं, और मुझे सालों से ssh-key के लिए पासवर्ड दर्ज नहीं करना पड़ा है । मैं बस एक टर्मिनल खोल सकता हूं, "ssh <server>" टाइप करें, और मैं वहां हूं। मुझे लगता है कि मैंने पहली बार OSX 10.5 के तहत यह कुंजी सेट की है। id_dsa, लेकिन मुझे नहीं लगता कि यह बात होनी चाहिए।
माइकल एच।

मेरी id_rsaकुंजी पर एक पासवर्ड है।
सोरिन

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

1
@ सोरीन - तो मेरा है! मुझे इसे एक बार, बहुत पहले दर्ज करना था, और मैक ने मेरे लिए इसे तब से सहेजा है। उम्मीद है कि हेराल्ड की सलाह मदद करेगी।
माइकल एच।

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

जवाबों:


685

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

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

चरण 1 - कुंजी को किचेन में स्टोर करें

बस एक बार ऐसा करें:

ssh-add -K ~/.ssh/[your-private-key]

अपना मुख्य पासफ़्रेज़ दर्ज करें, और आपसे दोबारा इसके लिए नहीं पूछा जाएगा।

(यदि आप OSX के पूर्व-सिएरा संस्करण पर हैं, तो आप कर रहे हैं, चरण 2 की आवश्यकता नहीं है।)

चरण 2 - एसएसएच को हमेशा किचेन का उपयोग करने के लिए कॉन्फ़िगर करें

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

समाधान काफी सरल है, और इस github थ्रेड टिप्पणी में उल्लिखित है । यहां बताया गया है कि आपने इसे कैसे सेट किया है:

  1. सुनिश्चित करें कि आपने किचेन में कुंजी को संग्रहीत करने के लिए चरण 1 को पूरा कर लिया है।

  2. यदि आपने पहले से नहीं बनाया है, तो एक ~/.ssh/configफ़ाइल बनाएँ । दूसरे शब्दों में, .sshअपने घर की निर्देशिका में निर्देशिका, नामक एक फ़ाइल बनाते हैं config

  3. उस .ssh/configफ़ाइल में, निम्न पंक्तियाँ जोड़ें:

    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    

    ~/.ssh/id_rsaअपनी निजी कुंजी का वास्तविक फ़ाइल नाम बदलें । यदि आपकी ~.sshनिर्देशिका में अन्य निजी कुंजियाँ हैं , तो IdentityFileउनमें से प्रत्येक के लिए एक पंक्ति भी जोड़ें । उदाहरण के लिए, मेरे पास एक अतिरिक्त पंक्ति है जो IdentityFile ~/.ssh/id_ed25519दूसरी निजी कुंजी के लिए पढ़ती है ।

    UseKeychain yesमहत्वपूर्ण हिस्सा है, जो बताता है SSH कुंजी पदबंध के लिए अपने OSX-चेन में देखने के लिए है।

  4. बस! अगली बार जब आप किसी भी ssh कनेक्शन को लोड करते हैं, तो यह आपके द्वारा निर्दिष्ट निजी कुंजियों की कोशिश करेगा, और यह OSX चाबी का गुच्छा में उनके पासफ़्रेज़ की तलाश करेगा। कोई पासफ़्रेज़ टाइपिंग की आवश्यकता नहीं है।


2
यह लगभग मेरे लिए काम किया। मेरे "लॉगिन" किचेन में पहले से ही स्वचालित लॉकिंग अक्षम था, इसलिए मैथ्यू सनाब्रिया का जवाब लागू नहीं हुआ। ssh-add -K ...पासवर्ड के लिए संकेत दिए बिना ssh एजेंट में कुंजियों का उपयोग करना , लेकिन केवल वर्तमान सत्र के लिए। एक रिबूट के बाद, मुझे कमान फिर से खोलनी पड़ी।
पौल्स्बो

4
@Poulsbo & @Abram - मेरा अपडेट देखें, सिएरा ने स्वचालित व्यवहार को बदल दिया और अब आपको ssh-add -Aअपने सहेजे गए किचेन को लोड करने के लिए मैन्युअल रूप से चलाना होगा । ऊपर उल्लिखित कुछ संभावित समाधान।
trisweb

3
@trisweb टिप के लिए धन्यवाद। .ssh/configफ़ाइल को संशोधित करने का joshbuchea का समाधान आशाजनक लगता है! देखें github.com/lionheart/openradar-mirror/issues/...
Poulsbo

2
@ सोरिन ने अद्यतन जवाब देखा, और मुझे बताएं कि क्या आपके पास कोई प्रतिक्रिया है। धन्यवाद!
ट्रिसवेब

9
बहुत अच्छा काम करता है! मेरे मामले में मुझे चाबी का गुच्छा में अपनी चाबियाँ जोड़ने और उसमें पासफ़्रेज़ ( ) दर्ज करने के लिए Aध्वज के उपयोग की आवश्यकता थी । धन्यवाद! Kssh-add -AK ~/.ssh/[your-private-key]
Youssman

21

मुझे इसी तरह की समस्या थी, इसमें मुझे हर बार अपने पब-की-पास के लिए पूछा जा रहा था।

उपर्युक्त उपयोगकर्ता "ट्रिसवेब" के सुझाव के अनुसार, मैंने इन विकल्पों को ~ / .ssh / config में बदल दिया।

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

लेकिन यह अभी भी हर बार जब मैं ssh का उपयोग करना चाहता था प्रेरित किया।

अंततः मैंने "ssh -v" चालू किया और इस डिबग लाइन को पाया:

debug1: key_load_pStreet: निजी कुंजी को डिक्रिप्ट करने के लिए गलत पासफ़्रेज़ की आपूर्ति की जाती है

मैंने फिर "कीचेन एक्सेस.ऐप" में अपना चाबी का गुच्छा खोला, "एसएसएच: / यूर्स / यूसर्न //ssh/id_rsa" नाम की कुंजी पाया और इसे खोला।

मैंने पासवर्ड दिखाने के लिए "पासवर्ड दिखाएं" पर क्लिक किया और वास्तव में पाया कि कीरिंग में पासफ़्रेज़ एक पुराना पासफ़्रेज़ था।

मैंने किचेन एक्सेस में पासफ़्रेज़ को अपडेट किया, और अब पासवर्ड-फ्री काम करता है।

मैं इस वाक्यांश के साथ पासफ़्रेज़ को भी अपडेट कर सकता था:

ssh-keygen -p -f ~ / .ssh / id_rsa


13

आपको हर बार पासवर्ड के लिए संकेत दिया जा रहा है क्योंकि निष्क्रियता और / या सोने या आपके मामले में रिबूट के बाद आपके "लॉगिन" किचेन को बंद किया जा रहा है। आपके लिए इसे हल करने के दो तरीके हैं।

  1. अपने "लॉगिन" किचेन के लिए सेटिंग्स बदलें। मान लें कि आपकी ssh कुंजी "लॉगिन" किचेन में संग्रहीत है।

    • किचेन एक्सेस खोलें
    • "लॉगिन" कीचैन को हाइलाइट करें
    • "लॉगिन" किचेन पर राइट-क्लिक करें या विकल्प पर क्लिक करें
    • "लॉक को X मिनट की निष्क्रियता के बाद" और "सोते समय लॉक" चेकबॉक्स को अनचेक करें।
  2. पासफ़्रेज़ का उपयोग किए बिना एक और SSH कुंजी उत्पन्न करें।

    • टर्मिनल खोलें।
    • कमांड दर्ज करें: ssh-keygen -t rsa -b 4096 -C <comment> -f <.ssh/id_rsa>
    • -t प्रकार के लिए है, -b कुंजी आकार है, -C टिप्पणी है, -f आउटपुट फ़ाइल (पहले निर्देशिकाओं का निर्माण करना चाहिए)
    • एक पासफ़्रेज़ सेट न करें।
    • SSH कुंजी को "लॉगिन" किचेन में आयात करें ssh-add -K <path to ssh key>

अब आपको किचेन पासवर्ड के लिए संकेत नहीं दिया जाना चाहिए।


2
ध्यान दें कि ssh-addएसएसएच के अंदर से आह्वान करते समय , security unlock-keychainपहले बुलाया जाना चाहिए। इसके अलावा, मुझे -fपैरामीटर के लिए निर्देशिकाएं बनाने की आवश्यकता नहीं थी । दुर्भाग्य से, मुझे अभी भी security unlocl-keychainSSH सत्रों में लॉगिन किचेन तक पहुंचने के लिए कॉल करना पड़ता था, जो हर बार पासवर्ड के लिए संकेत देता है ...
Ohad Schneider

2
पूरे बिंदु को कुंजी पर एक पासफ़्रेज़ रखना है। मुझे संदेह है कि नई SSH कुंजी उत्पन्न करना प्रश्न के लिए सहायक है।
ग्रे

7

इसके अलावा, macOS Sierra और HighSierra (पिछले संस्करणों के बारे में नहीं जानते), चलाने ssh-add -Aसे एजेंट को उन सभी चाबियों को लोड करने के लिए मिलेगा, जिनके पासफ्रेज किचेन पर जमा हो जाते हैं ... इसलिए बहुत काम


7

उन सभी के लिए जहां ऊपर काम नहीं किया गया था, मेरा मुद्दा ऐसा प्रतीत होता है क्योंकि मैं सभी ssh प्रमुख प्रोफाइल / शॉर्टकट में UseKeychain yes& amp AddKeysToAgent yes; नकल कर रहा था । मैंने अपनी ~/.ssh/configफ़ाइल को केवल एक बार इनकी घोषणा करने के लिए अद्यतन किया और अब वे सभी स्टार्टअप पर पासवर्ड के लिए संकेत किए बिना लॉगिन पर लोड करते हैं, उदाहरण के लिए:

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/foo
  IdentityFile ~/.ssh/bar

Host foo
  HostName foo.com
  User fooUser
  IdentityFile ~/.ssh/foo

Host bar
  HostName bar.com
  User barUser
  IdentityFile ~/.ssh/bar

-3

सार्वजनिक कुंजी इसमें जोड़ें:

.ssh/known_hosts

सार्वजनिक कुंजी आमतौर पर हैं:

/home/user/.ssh/id_rsa.pub

उम्मीद है की वो मदद करदे


8
मुझे लगता है कि इसका मतलब हैauthorized_keys
रेने लार्सन

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