सवाल एसएसएच कुंजी के साथ मैक ओएस एक्स कीचेन का उपयोग कैसे करें?


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

मेरे पास कुछ आरएसए कुंजी हैं जिन्हें मैंने विभिन्न सर्वरों तक पहुंचने के लिए मेरी ~ / .ssh निर्देशिका में संग्रहीत किया है। मेरे पास उन चाबियों पर पासफ्रेज सेट नहीं हैं। वर्तमान में उन सर्वरों में लॉग इन करने के लिए मैं टर्मिनल में निम्न आदेशों का उपयोग करता हूं:

eval `ssh-agent`
ssh-add ~ / .ssh / some_key_rsa
एसएसएच उपयोगकर्ता @ सर्वर

(मैंने इसे आसान बनाने के लिए कुछ बैश फ़ंक्शंस लिखे हैं।)

Keychain का उपयोग कर ऐसा करने का कोई बेहतर तरीका है?


133
2017-12-28 12:08


मूल




जवाब:


इसके लिए काम करने के लिए, $SSH_AUTH_SOCK पर्यावरण चर को इंगित किया जाना चाहिए /tmp/launch-xxxxxx/Listeners। यह लॉग इन करते समय स्वचालित रूप से किया जाना चाहिए। उस सॉकेट पर श्रोता एसएसएच-एजेंट प्रोटोकॉल बोलता है।

आपकी बैश स्क्रिप्ट आपके स्वयं के एसएसएच एजेंट शुरू कर रहे हैं (वर्तनी ssh-agent, ssh_agent नहीं) और मौजूदा ओवरराइडिंग ssh-agent यह आपके लिए लॉगिन पर स्थापित है।

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

अंत में, जब आप पहली बार लॉग इन करते हैं, तो आप शायद एसएसएच-एजेंट प्रक्रिया नहीं देखेंगे। यह प्रक्रिया स्वचालित रूप से लॉन्च सेवाओं द्वारा शुरू की जाएगी जब पहली बार उस सॉकेट को पढ़ने की कोशिश करता है /tmp


16
2017-12-28 17:37



धन्यवाद। तो मुझे अभी भी दौड़ना होगा ssh-add लॉग इन में शुरू होने वाले डिफ़ॉल्ट एसएस एजेंट को मेरी आरएसए पहचान जोड़ने के लिए? - John Topley
आपको ssh-add चलाने की ज़रूरत नहीं है; एसएसएच एजेंट पहली बार एसएसएच चलाने पर कुंजी के पासफ्रेज के लिए पूछेगा। - Rudedog
जब भी मैं ssh चलाता हूं, यह मुझे पासवर्ड के लिए संकेत दे रहा है। मुद्दा यह है कि मैं किसी भी पासवर्ड दर्ज नहीं करना चाहता हूं। - John Topley
पासवर्ड के लिए आपको क्या संकेत दे रहा है? मुझे संदेह हो रहा है कि यह रिमोट सर्वर है जो आपको संकेत दे रहा है, जो आपके बयान को रखता है कि आपकी कुंजी में बेहतर परिप्रेक्ष्य में पासफ्रेज़ नहीं हैं। अगर आप रिमोट सर्वर पर पासवर्ड बाईपास करना चाहते हैं, तो आपको अपनी सार्वजनिक कुंजी को जोड़ना होगा $HOME/.ssh/authorized_keys उस सर्वर पर। मैक ओएस के एसएस-एजेंट + कीचेन का उपयोग केवल आपके स्थानीय एसएसएच कुंजी के लिए पासफ्रेज को स्टोर करने के लिए किया जाता है; यह मौजूदा एसएसएच कनेक्शन पर रिमोट पासवर्ड भेजने के लिए नहीं है। - Rudedog
उपयोग ssh -v एसएसएच क्या कर रहा है इसका निदान करने के लिए। इसका भी प्रयोग करें sshd -p 8900 -v सर्वर की तरफ और ssh -v remote:8900 एसएसडी क्या कर रहा है इसका निदान करने के लिए। - Rudedog


ओएस एक्स के तेंदुए के रिलीज के रूप में, एसएसएच-एजेंट कीचैन के साथ अधिक कड़ाई से एकीकृत है। Keychain में सुरक्षित रूप से अपने सभी एसएसएच कुंजी के पासफ्रेज को स्टोर करना संभव है, जिससे एसएसएच-एजेंट उन्हें स्टार्टअप पर पढ़ेगा। निचली पंक्ति यह है कि पासफ्रेज़ के साथ अपनी चाबियाँ सुरक्षित करना आसान है, लेकिन उन्हें उपयोग करने के लिए पासफ्रेज़ को कभी भी टाइप करना नहीं है! यहां कैसे:

कुंजीचैन के लिए प्रत्येक एसएस कुंजी में पास वाक्यांश जोड़ें: (विकल्प -k केवल सादे निजी कुंजी लोड करता है, प्रमाण पत्र छोड़ देता है)

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

(ध्यान दें कि एक राजधानी है)

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

ssh-add -l

245
2018-04-11 19:58



यह स्वीकार्य उत्तर होना चाहिए। - Kris
स्वीकार्य उत्तर इस विशिष्ट उपयोगकर्ता के प्रश्न का उत्तर देता है, लेकिन यह सामान्य उपयोगकर्ता के प्रश्न का उत्तर देता है - eqzx
developer.apple.com/library/mac/documentation/Darwin/Reference/...  आपको कीचेन में पासफ्रेज स्टोर करने के लिए -K विकल्प की भी आवश्यकता है। - Neeme Praks
यदि आपने होमब्री जैसे पैकेज सिस्टम के माध्यम से एसएसएच का एक और संस्करण स्थापित किया है, तो एक पूर्ण पथ का उपयोग करना आवश्यक है /usr/bin/ssh-add। - Ludovic Kuty
मैकोज सिएरा के लिए, चीजें बदल गई हैं। देख github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain - schieferstapel


के रूप में मैकोज सिएरा, ssh-एजेंट जब आप अपने खाते में लॉग इन करते हैं तो अब ऑटो लोड पहले एसएसएच कुंजी लोड नहीं होता है। यह ऐप्पल भाग पर जानबूझकर है, वे मुख्यधारा के साथ फिर से संरेखित करना चाहते थे OpenSSH कार्यान्वयन। [1]


यथा व्याख्यायित यहाँ, यह तब से अनुशंसित विधि है मैकोज़ 10.12.2:

  1. निम्नलिखित पंक्तियां जोड़ें ~/.ssh/config फ़ाइल:

    Host *
        UseKeychain yes
        AddKeysToAgent yes
    
  2. आप जो भी कुंजी जोड़ते हैं ssh-एजेंट का उपयोग करते हुए ssh-add /path/to/your/private/key/id_rsa आदेश कुंजीपटल में स्वचालित रूप से जोड़ा जाएगा, और रीबूट पर स्वत: लोड किया जाना चाहिए।


निम्नलिखित को बहिष्कृत किया गया है (संदर्भ के लिए रखा गया है)।

पिछले व्यवहार पर वापस जाने के लिए, आप इसे चलाने के लिए चाहते हैं ssh-add -A कमांड (जो आपके कुंजीपैन पर पास-वाक्यांशों को स्वतः लोड करता है) जब आप लॉग इन करते हैं। ऐसा करने के लिए, इन चरणों का पालन करें:

  1. सबसे पहले, उन सभी कुंजियों को जोड़ें जिन्हें आप स्वतः लोड करना चाहते हैं ssh-एजेंट का उपयोग करते हुए ssh-add -K /absolute/path/to/your/private/key/id_rsa आदेश। -K तर्क सुनिश्चित करता है कि कुंजी पास-वाक्यांश जोड़ा गया है मैकोज़ की कीचेन। सुनिश्चित करें कि आप कुंजी के पूर्ण पथ का उपयोग करें। एक सापेक्ष पथ का उपयोग करने से ऑटो-लॉन्च स्क्रिप्ट आपकी कुंजी नहीं ढूंढ पाएगी।

  2. सुनिश्चित करें कि जब आप टाइप करते हैं तो आपकी सभी चाबियाँ जोड़ दी जाती हैं ssh-add -A

  3. नामक एक फाइल बनाएं com.yourusername.ssh-add.plist में ~/Library/LaunchAgents/ नीचे सामग्री के साथ। प्लेस्ट फाइलें जैसे कि इसका उपयोग किया जाता है launchd लॉग इन करते समय स्क्रिप्ट चलाने के लिए। [2]  [3]

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>Label</key>
      <string>com.user.loginscript</string>
    <key>ProgramArguments</key>
      <array>
        <string>ssh-add</string>
        <string>-A</string>
      </array>
    <key>RunAtLoad</key>
      <true/>
    </dict>
    </plist>
    
  4. कहना launchd लोड करने के लिए प्लेस्ट फ़ाइल आपने अभी निष्पादन करके बनाया है: launchctl load ~/Library/LaunchAgents/com.yourusername.ssh-add.plist

और आपको पूरा सेट होना चाहिए।


73
2017-12-12 18:17



सम्बंधित: apple.stackexchange.com/questions/48502/... - slm


से एक आसान तरीका है रिकार्डो का जवाब अपने मैक के सत्र / पुनरारंभ के बीच 10.12 सिएरा चलाने के बीच अपना पासवर्ड जारी रखने के लिए।

  1. ssh-add -K ~/.ssh/id_rsa
    नोट: उस पथ को बदलें जहां आपकी id_rsa कुंजी स्थित है।
  2. ssh-add -A 
  3. निम्नलिखित बनाएं (या संपादित करें यदि यह मौजूद है) ~/.ssh/config फ़ाइल:

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

    अब पासवर्ड को पुनरारंभ के बीच याद किया जाता है!

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


29
2018-01-05 18:53



बहुत बढ़िया, एक आकर्षण की तरह काम करता है, imho बहुत साफ करने के बाद दूसरों और सही जगह में हल :) - GerardJP


नोट: मैकोज़ सिएरा के लिए, कृपया हाल ही में देखें क्रिसजेएफ द्वारा जवाब

[जेफ मैककरेल द्वारा जवाब] [2] सही है, सिवाय इसके कि पास वाक्यांश जोड़ने के लिए कमांड में एक हाइफ़न के बजाय एक एन डैश होता है, यानी। –K के बजाय -K, जिसके प्रभाव के लिए एक संदेश का कारण बनता है –K: No such file or directory। इसे पढ़ना चाहिए:

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

9
2018-04-28 13:28



यह आपके द्वारा संदर्भित उत्तर के लिए एक ताजा उत्तर के बजाय एक टिप्पणी होना चाहिए। हम यहां सुरक्षा के बारे में बात कर रहे हैं। कोई सुझाव दे सकता है कि आपको अंधेरे की प्रतिलिपि बनाने और चिपकाने के बजाए सावधानीपूर्वक टाइप करना चाहिए ssh-add -K - Phil_1984_
के साथ एक हाइफ़न का उपयोग, मुझे मिलता है illegal option -- K। लोअरकेस के को एक विकल्प के रूप में सूचीबद्ध किया गया है। - Sam Dutton
प्रतिक्रिया के लिए धन्यवाद। मैंने मैकोज सिएरा पर अभी जांच की है: -K, यानी डैश-कैपिटल-के, अभी भी मान्य है - simonair


मुझे संदेह है कि आप डिफ़ॉल्ट का उपयोग नहीं कर रहे हैं ssh आदेश। क्या आपके पास है ssh बंदरगाहों के माध्यम से स्थापित? प्रयत्न which ssh कौन सा देखने के लिए ssh आदेश आप उपयोग कर रहे हैं।

आम तौर पर इसे आपके लिए पासवर्ड पूछने के लिए एक संवाद बॉक्स प्रदर्शित करना चाहिए, अगर यह आपके पास पहले से ही चाबी में संग्रहीत नहीं है।


6
2017-12-28 12:55



मैं बंदरगाहों का उपयोग नहीं कर रहा हूँ। - John Topley
जानकारी के लिए धन्यवाद :) मुझे समस्याएं थीं क्योंकि मैं होमब्री से ओपनएसएसएच का उपयोग कर रहा था। - ggustafsson


क्लाइंट एसएसएच प्रमाण का उपयोग करके लॉगिन करने का प्रयास करते समय मुझे एक ही समस्या थी। इस विशिष्ट मामले में यह एक गिट भंडार तक पहुंचने के लिए था। यह स्थिति थी:

  • कुंजी में सहेजा गया था ~/.ssh/
  • निजी कुंजी पासफ्रेज है।
  • पासफ्रेज ओएस एक्स लॉगिन कीचेन में संग्रहीत है। ~/Library/Keychains/login.keychain
  • कनेक्शन निम्नानुसार था: मेरा मैक -> रिमोट मैक -> गिट / एसएसएच सर्वर
  • मैक ओएस एक्स 10.8.5

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

  1. security unlock-keychain पासफ्रेज लॉगिन कीचेन में संग्रहीत है। यह इसे अनलॉक करता है और एसएसएच एजेंट को इसका उपयोग करने में सक्षम बनाता है।
  2. eval `ssh-agent -s` शैल उपयोग के लिए एसएसएच एजेंट शुरू करता है। इसे कीचेन से पासफ्रेज मिलेगा और निजी एसएसएच कुंजी अनलॉक करने के लिए इसका इस्तेमाल किया जाएगा।
  3. एसएसएच / गिट कनेक्शन स्थापित करें और मेरा काम करें।
  4. eval `ssh-agent -k` चल रहे एसएसएच एजेंट को मार डालो।
  5. security lock-keychain कुंजीपटल फिर से लॉक करें।

6
2017-10-14 12:29



उपनाम के भीतर मेरे लिए काम करने के लिए # 2 के लिए, मुझे उपयोग करना पड़ा eval \$(ssh-agent) प्रति पुन: रिमोट लॉगिन और कीचेन। जब उपनाम के भीतर नहीं eval $(ssh-agent) काम करता है (बैकस्लैश $ के बिना)। - Travis


यह भी देखें:

security import priv_key.p12 -k ~/Library/Keychains/login.keychain
security import pub_key.pem -k ~/Library/Keychains/login.keychain

... इस नोट को जोड़ने के रूप में अधिक विस्तार से अनुरोध किया गया था: "सुरक्षा" कमांड कुंजी (और अन्य चीजों) को सीधे कीचेन में आयात करने में सक्षम है। अच्छी बात यह है कि एसएसएच-एड के विपरीत, आप कीचेन निर्दिष्ट करने में सक्षम हैं। इससे सिस्टम कोचैन ("मैन सुरक्षा" सीखने के लिए सीधे सिस्टम में आयात करना संभव हो जाता है)


4
2018-03-26 09:45



क्या आप इस उत्तर के लिए थोड़ा और विवरण दे सकते हैं? धन्यवाद। - Matthew Williams


सबसे अच्छा और ऐप्पल इरादा समाधान (चूंकि मैकोज़ 10.12.2) वर्णित है यहाँ

तो बस निम्नलिखित करें:

echo "UseKeychain हाँ" >> ~ / .ssh / config


1
2018-01-26 10:39



का उपयोग करते हुए >> यदि आप कई बार कमांड इनपुट करते हैं तो जोखिम में है। जैसा कि वर्णन किया गया है, फ़ाइल के मैन्युअल संस्करण को बेहतर करें क्रिसजेएफ जवाब। - Cœur
हाँ तुम वहाँ हो - Ben