जब से मैंने सिएरा को अपडेट किया है तब से macOS मेरे ssh पासफ़्रेज़ के बारे में पूछता रहता है


588

यह पासफ़्रेज़ को याद करता था, लेकिन अब यह हर बार मुझसे पूछ रहा है।

मैंने पढ़ा है कि मुझे इस कमांड के साथ सार्वजनिक कुंजी को पुनर्जीवित करने की आवश्यकता है, जो मैंने किया था:

ssh-keygen -y -f id_rsa > id_rsa.pub

लेकिन यह कुछ भी ठीक नहीं किया।

मैं अपने पासफ़्रेज़ को फिर से कैसे याद कर सकता हूँ?


मैं संबंधित व्यवहार का अनुभव कर रहा हूं: पहले, कुंजी रिंग संवाद पासवर्ड पूछने के लिए पॉप अप होता था, अब मुझे बस नियमित एसएसएच कंसोल प्रांप्ट मिलता है। कुछ हेल्पर प्रोग्राम पंजीकरण शायद चले गए हैं।
डैनियल बी

1
यह वर्षों से है जब मैंने अपना id_rsa जनरेट किया है और मैंने कभी भी पासफ़्रेज़ का उपयोग नहीं किया है और इसका उपयोग कई सर्वरों में ssh करने के लिए किया है। क्या मेरे पास वास्तव में इस पर पासफ़्रेज़ है, या यह सिर्फ इतना है कि सिएरा सोचता है कि मुझे क्या करना चाहिए? ध्यान दें कि $ बिल्ली ~ / .ssh / id_rsa | सिर -2 ----- BEGIN RSA निजी कुंजी ----- प्रोक-प्रकार: 4, अनुमानित
जो मुर्रे


यदि आप Pretzo का उपयोग कर रहे हैं और इनमें से किसी भी उत्तर ने आपकी समस्या को हल नहीं किया है: सुनिश्चित करें कि आपके पास sshमॉड्यूल सक्षम नहीं है zpretzorc। यह वैसे भी macOS पर अनावश्यक है, और यदि सक्षम है, तो यह आपके जोड़ने के बाद भी आपके पासफ़्रेज़ के लिए संकेत देगा UseKeychain
जिमोथी

1
ssh -v ...यह देखने की कोशिश करें कि क्या इसकी कोई उपयोगी डिबग जानकारी है ...
rogerdpack

जवाबों:


1129

MacOS के नवीनतम संस्करण (10.12.2) में, इसे ठीक करना आसान है। बस अपना संपादन करें ~/.ssh/configऔर UseKeychainविकल्प को सक्षम करें :

Host *
    UseKeychain yes

कुछ और बदलने की जरूरत नहीं है। अब सब कुछ नवीनतम अपडेट से पहले काम करने के तरीके का उपयोग करता है। आपको चाबियाँ जोड़ने की आवश्यकता नहीं है ssh-agent


संपादित करें: आपको अभी भी एक बार अपना पासफ़्रेज़ दर्ज करने की आवश्यकता हो सकती है। यदि आप इसे नहीं जानते हैं, तो इसे प्रकट करने के लिए इन निर्देशों का पालन करें ।


24
यह बिल्कुल मेरे लिए काम किया। इस फिक्स की तुलना में नीचे सब कुछ अधिक जटिल लगता है।
Br.Bill

82
ध्यान दें, Host *ब्लॉक (लगभग) को हमेशा आपकी ~/.ssh/configफ़ाइल के नीचे रखा जाना चाहिए । जब sshवह सेटिंग्स खोज रहा है तो वह पहले मूल्य का उपयोग करता है जो इसे पाता है। इस प्रकार, वाइल्डकार्ड ब्लॉक को अंत में रखकर, यह चूक के एक सेट के रूप में कार्य करता है; आप पहले फ़ाइल में निर्दिष्ट करके विशिष्ट होस्ट के लिए सेटिंग्स को ओवरराइड कर सकते हैं।
मोलॉम्बी

6
इसने मेरे लिए भी काम किया लेकिन मुझे एक बार सही तरीके से पासफ़्रेज़ दर्ज करना पड़ा। एक और जवाब है जो बताता है कि यदि आप इसे याद नहीं रखते हैं तो आप पासवर्ड कैसे देख सकते हैं।
FGreg

26
यदि कॉन्फ़िग फ़ाइल मौजूद नहीं है, तो एक बनाना और इसे जोड़ना भी काम करेगा।
विन्शाफ्ट

6
आपको Host *शीर्षासन की आवश्यकता नहीं है । यदि आप इसके लिए सभी मेजबानों पर आवेदन करना चाहते हैं, तो बस UseKeychain yesअपने शीर्ष पर सिंगल लाइन जोड़ें .ssh/config
sj26

185

मुझे भी यही समस्या थी। MacOS सिएरा चाबी का गुच्छा पासफ़्रेज़ के लिए पूछता रहता है। आपकी id_rsa को सुरक्षा के लिए पासफ़्रेज़ के साथ एन्क्रिप्ट किया जाना चाहिए। फिर इसे किचेन में जोड़ने का प्रयास करेंssh-add -K ~/.ssh/id_rsa

यदि आपकी कुंजी किसी अन्य फ़ोल्डर में है ~/.sshतो सही फ़ोल्डर के साथ स्थानापन्न करें।

किचेन अब आपकी ssh कुंजी जानता है और, उम्मीद है, सभी काम अब (मेरा किया)


25
यह काम करता है लेकिन लगता है कि जब मैं अपने कंप्यूटर को पुनरारंभ करता हूं, तो यह जारी नहीं रहता। किसी और को एक ही मुद्दा रहा है?
joshua.paling

1
हाँ, यहाँ एक ही मुद्दा है। @ joshua.paling
Kingkool68

18
@ joshua.paling, Kingkool68 - Apple ने मुख्यधारा ओपनएसएसएच व्यवहार के अनुरूप अपने एसएसएच कीज को रिबूट के दौरान याद रखने की क्षमता को हटा दिया है। समान कार्यक्षमता प्राप्त करने के अन्य तरीकों के लिए यह प्रश्न देखें: apple.stackexchange.com/questions/254468/…
इवान पोन

@ EvanPon लेकिन यह एन्क्रिप्टेड कुंजियों के साथ काम नहीं करेगा, यह होगा?
कोनराड रुडोल्फ

2
@KonradRudolph यह मेरे लिए काम करता है। विकल्प के ssh-addसाथ कॉल करने से -Aप्रश्न में पहचान के लिए किसी भी पासवर्ड के लिए MacOS चाबी का गुच्छा दिखेगा। मुझे विश्वास है कि अगर कीचेन में पासवर्ड नहीं हैं तो यह आपको संकेत देगा।
इवान पोन

73

यह मेरे समान मुद्दा तय:

/usr/bin/ssh-add -K

यह आपके किचेन में पासफ़्रेज़ को संग्रहीत करता है।

अपडेट (धन्यवाद @EasyCo): यह काम करता है लेकिन पुनरारंभ के बीच नहीं रहता है। @ इस पृष्ठ पर jukka-suomela का समाधान पुनरारंभ के दौरान काम करता है । आप इसका उत्तर यहां पा सकते हैं:

https://superuser.com/a/1158050/234685


3
यह केवल एक चीज है जो काम करती है।
cryptic0

5
मुझे इस समाधान का उपयोग करते समय .ssh / .config बनाने की आवश्यकता नहीं थी।
Shai

इसने मेरे लिए काम किया। होस्ट फ़ाइल को संपादित करने की आवश्यकता नहीं है। मैं सिएरा पर हूं।
cchiera

इसने मेरे लिए मैक ओएस सिएरा पर काम किया।
डे्रॉन गैलार्डो

2
जैसा कि पहले कहा गया है, यह काम करता है लेकिन पुनरारंभ के बीच नहीं रहता है। @ jukka-suomela का समाधान पुनरारंभ के दौरान काम करता है।
ईजीको

40

मुझे केवल एक बार सही पासफ़्रेज़ दर्ज करना था और यह काम करने लगा। समस्या यह थी कि मुझे अपने मूल SSH पासफ़्रेज़ याद नहीं थे, लेकिन मैंने इसे गिथूब के इन चरणों का पालन करके पुनर्प्राप्त किया :

  • फाइंडर में, किचेन एक्सेस ऐप खोजें।
  • किचेन एक्सेस में, SSH की खोज करें।
  • एक नया संवाद बॉक्स खोलने के लिए अपनी SSH कुंजी के लिए प्रविष्टि पर डबल क्लिक करें।
  • किचेन एक्सेस डायलॉग निचले-बाएँ कोने में, पासवर्ड दिखाएँ का चयन करें।
  • आपको अपने प्रशासनिक पासवर्ड के लिए संकेत दिया जाएगा। इसे "कीचेन एक्सेस" डायलॉग बॉक्स में टाइप करें।
  • आपका पासवर्ड सामने आ जाएगा।

2
काम नहीं करता है। टर्मिनल अभी भी "खराब पासफ़्रेज़" कहता है
Jayden Lawson

18

उपरोक्त में से कोई भी समाधान एक नए मैकबुक प्रो पर एल कैपिटान पर सिएरा को स्थापित करने के बाद काम नहीं किया। सियरा डिज़ाइन के द्वारा किचेन में SSH कीज़ नहीं बचती हैं।

मेरे लिए दो समाधान काम किए। एक कमांड ssh-add -A &> /dev/nullको ~ / .bash_profile में जोड़ना है । हर बार जब आप टर्मिनल खोलते हैं, तो इस कमांड को निष्पादित किया जाएगा ( &> /dev/nullभाग कमांड का आउटपुट फाइल / देव / नल भेजता है)।

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


ऐसा प्रतीत होता है कि Apple का आधिकारिक उत्तर भी है - openradar.appspot.com/27348363
निक मेनार्ड

मेरे लिए अब तक का सबसे अच्छा समाधान। मैं मैक OSX सिएरा (10.12.2) का उपयोग कर रहा हूं।
zyc

15

एक तय यह है कि आप अपने ~ / .ssh / config फाइल में निम्नलिखित जोड़ सकते हैं:

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

इससे लिया गया: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ यह भी देखें: https://apple.stackexcc.com/a/264974/3810


अब तक, किसी भी उत्तर में, किसी ने भी Bad configuration option: usekeychainमुझे UseKeychain के साथ मिलने वाली त्रुटि का उल्लेख नहीं किया है (हालांकि यह पूंजीकृत है)। लेकिन मैं इसे सिर्फ उस लाइन को हटाकर और AddKeysToAgent और IdentityFile को छोड़कर काम करने में सक्षम था (आपको अभी भी पहली बार पासफ़्रेज़ दर्ज करना है)। यह macOS Sierra 10.12.6 के साथ है।
विलियम टरेल

जब मैं टर्मिनल में होता हूं तो यह ठीक काम करता है और ssh कमांड का उपयोग करता है, लेकिन अन्य एप्स, जैसे कि WebStorm जो अपने टर्मिनल का उपयोग करते हैं, जब तक मैं पहली बार नियमित टर्मिनल में ssh कमांड का उपयोग नहीं करता, तब तक thi कॉन्फ़िगरेशन नहीं लेते हैं। फिर यह हर जगह काम करता है, कोई सुझाव?
संटियागो अरिजति

@WilliamTurrell यदि यह अभी भी होता है, तो यह which sshसुनिश्चित करने के लिए टाइप करें कि आप उपयोग /usr/bin/sshनहीं कर रहे हैं और /usr/local/bin/ssh/opt/local/bin/ssh
फ़िंक

7

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

  1. सत्यापित करें कि आपकी id_rsaफ़ाइल निम्न कमांड के साथ एन्क्रिप्ट की गई है:cat ~/.ssh/id_rsa | head -2
  2. यदि दूसरी पंक्ति कहती है Proc-Type: 4,ENCRYPTED, तो यह एन्क्रिप्टेड है और आप इसे डिक्रिप्ट करने की कोशिश कर सकते हैं
  3. महत्वपूर्ण: अपनी मूल id_rsaफ़ाइल का बैकअप बनाएं ! कमांड का उपयोग करेंcp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. अपनी निजी कुंजी को डिक्रिप्ट करें openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
  5. मूल कुंजी ( rm ~/.ssh/id_rsa) को हटा दें और इसे डिक्रिप्टेड के साथ बदलें:mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

इन चरणों के बाद, आपको फिर से ssh का उपयोग करने में सक्षम होना चाहिए।


4
जबकि यह एक प्रकार का वर्कअराउंड है, मुझे नहीं लगता कि यह वास्तव में ओपी की समस्या को हल करता है।
डैनियल बी

यह मेरे लिए काम करता है। @ डैनियलबी, ऐसा करने में क्या दिक्कत है?
डेग होइदहल

7
@ DagHøidahl कुंजी को अब एन्क्रिप्ट नहीं किया जाएगा। इसे नियमित उपयोगकर्ता अधिकारों के साथ चोरी किया जा सकता है, इसलिए एन्क्रिप्शन एक मजबूत SHOULD है।
डैनियल बी

6
यह कुंजी से पासवर्ड को हटा देता है, यही वजह है कि यह ओपी की समस्या के आसपास काम करता है। लेकिन मैं इसके खिलाफ सलाह देता हूं। पासवर्ड वह सब है जो चोरी होने पर आपकी कुंजी का उपयोग करने से लोगों को रोकता है। चूंकि आपकी कुंजी संभवतः कई प्रणालियों तक पहुंच प्रदान करेगी, जिन्हें आप इसे कमजोर नहीं करना चाहते हैं।
मार्टिज़न हेमेल्स

5

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

https://developer.apple.com/library/content/technotes/tn2449/_index.html

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

4

कैपिसट्रानो का उपयोग करके कुछ कोड को तैनात करने का प्रयास करते समय मेरे पास यह मुद्दा था । अधिक निराश। इस समस्या से निपटने के लिए मुझे दो विधियां दी गई हैं।

विधि 1: SSH एजेंट में सभी ज्ञात कुंजियाँ जोड़ें ।

इसलिए मुझे जो एक समाधान मिला वह विकल्प के ssh-addसाथ चलना है -A- जो आपके किचेन में संग्रहीत किसी भी पासफ़्रेज़ का उपयोग करके एसएसएच एजेंट को सभी ज्ञात पहचान जोड़ता है - जैसे:

ssh-add -A

अब यह काम करता है लेकिन यह रिबूट के पार नहीं रहेगा। इसलिए यदि आप फिर से इस बारे में कभी चिंता नहीं करना चाहते हैं, तो अपने उपयोगकर्ता की ~/.bash_profileफ़ाइल को इस तरह खोलें :

nano ~/.bash_profile

और इस पंक्ति को नीचे तक जोड़ें:

ssh-add -A 2>/dev/null;

अब जब आप एक नया टर्मिनल विंडो खोलते हैं, तो सब अच्छा होना चाहिए!

विधि 2: एजेंट में कीचेन में केवल SSH कुंजियाँ जोड़ें ।

इसलिए जब ssh-add -Aविकल्प को सबसे बुनियादी मामलों के लिए काम करना चाहिए, तो मैं हाल ही में एक मुद्दे पर भाग गया, जहां मेरे पास 6-7 वैग्रेंट बॉक्स थे (जो कि एक्सेस के लिए SSH कुंजी / पहचान का उपयोग करता है) id_rsa.pubजगह में अधिक सामान्य के शीर्ष पर एक मशीन पर सेटअप ।

लंबी कहानी संक्षेप में, मैं SSH कुंजी / पहचान के आधार पर बहुत सारे विफल प्रयासों के कारण रिमोट सर्वर से लॉक हो गया क्योंकि सर्वर एक्सेस पासवर्ड पर आधारित था और SSH कुंजी / पहचान SSH कुंजी / पहचान हैं। तो SSH एजेंट ने मेरे सभी SSH कुंजियों को आज़माया , विफल रहा और मैं पासवर्ड प्रॉम्प्ट पर भी नहीं जा सका।

समस्या यह है कि ssh-add -Aबस मनमाने ढंग से हर एक SSH कुंजी / पहचान आप एजेंट को जोड़ देंगे, भले ही ऐसा करना आवश्यक न हो; जैसे कि वैग्रेंट बॉक्स के मामले में।

बहुत परीक्षण के बाद मेरा समाधान इस प्रकार था।

सबसे पहले, यदि आपके पास जरूरत से ज्यादा SSH कुंजी / पहचान आपके एजेंट में शामिल हैं - जैसा कि ssh-add -lतब दिखाया गया है, तो एजेंट से उन सभी को शुद्ध करें:

ssh-add -D

उस के साथ, फिर SSH एजेंट को पृष्ठभूमि प्रक्रिया के रूप में शुरू करें जैसे:

eval "$(ssh-agent -s)"

अब, यह अजीब हो गया है और मुझे यकीन नहीं है कि क्यों। कुछ मामलों में आप विशेष रूप ~/.ssh/id_rsa.pubसे एजेंट को कुंजी / पहचान जोड़ सकते हैं :

ssh-add ~/.ssh/id_rsa.pub

अपने पासफ़्रेज़ में टाइप करें, हिट करें Returnऔर आपको जाने के लिए अच्छा होना चाहिए।

लेकिन अन्य मामलों में बस इसे चलाने के लिए कुंजी / पहचान जोड़ा जाना पर्याप्त है:

ssh-add -K

यदि यह सब काम कर रहा है, तो टाइप करें ssh-add -lऔर आपको एक अकेला एसएसएच कुंजी / पहचान सूचीबद्ध दिखनी चाहिए।

सब अच्छा? अब अपने को खोलें .bash_profile:

nano ~/.bash_profile

और इस पंक्ति को नीचे तक जोड़ दें; -Aयदि आपके पास जगह है तो टिप्पणी करें या हटाएं :

ssh-add -K 2>/dev/null;

यह SSH कुंजी / पहचान को प्रत्येक स्टार्टअप / रिबूट पर SSH एजेंट को पुनः लोड करने की अनुमति देगा।

अद्यतन: Apple ने अब UseKeychainखुले SSH विन्यास विकल्पों में एक विकल्प जोड़ा है और ssh-add -Aएक समाधान भी मानता है।

MacOS सिएरा 10.12.2 के रूप में, Apple (मुझे लगता है) ने UseKeychainSSH कॉन्फ़िगरेशन के लिए एक कॉन्फ़िगरेशन विकल्प जोड़ा है । आदमी पृष्ठ की जाँच (के माध्यम से man ssh_config) निम्नलिखित जानकारी से पता चलता है:

UseKeychain
        On macOS, specifies whether the system should search for
        passphrases in the user's keychain when attempting to use a par-
        ticular key. When the passphrase is provided by the user, this
        option also specifies whether the passphrase should be stored
        into the keychain once it has been verified to be correct.  The
        argument must be ``yes'' or ``no''.  The default is ``no''.

जो इस खुले राडार टिकट में बताए अनुसारssh-add -A आपके समाधान के रूप में एप्पल को देखकर उबलता है या प्रति उपयोगकर्ता विकल्प में से एक को जोड़ता है ।.bash_profile UseKeychain~/.ssh/config


3

Jukka Suomela का उत्तर सही है, लेकिन यदि आप इसमें opensshसे इंस्टॉल कर रहे हैं homebrew, तो आपको इसके साथ इसे अनइंस्टॉल करने की भी आवश्यकता है:

brew remove openssh

... सिस्टम डिफ़ॉल्ट ओपनश पर वापस जाने के लिए, क्योंकि होमब्रेव का UseKeychainssh config प्रविष्टि का समर्थन नहीं करता है ।


1
अगर कोई
होमबॉव के

1

मैंने यहां सुझाए गए सभी समाधानों की कोशिश की, लेकिन मेरे मैक में किचेन स्थापित नहीं है।

.ssh/configस्थानीय और दूरस्थ मशीन दोनों पर शीर्ष फ़ाइल में निम्नलिखित पंक्ति को जोड़ना मेरे लिए काम करता है।

PubkeyAcceptedKeyTypes=+ssh-dss 

1

आपको macOS के हर स्टार्टअप पर चलने के .plistलिए एक फाइल जोड़ी जानी चाहिए।~/Library/LaunchAgents/ssh-add -A

एक एकल आदेश है जो यह करता है ( SSH-keys-in-macOS-Sierra-keychain से ) जो है:

curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.