मैं पासवर्ड-संरक्षित SSH कुंजी को स्थायी रूप से कैसे सहेज सकता हूं?


9

मैं बहुत बढ़िया Window Manager का उपयोग कर रहा हूँ

मैं पासवर्ड के साथ स्थायी रूप से निजी कुंजी कैसे जोड़ सकता हूं?

यहाँ उत्तर से प्रेरित होकर मैंने निजी कुंजियों को ~ / .ssh / config में जोड़ा है

~ /। Ssh / config की सामग्री:

IdentityFile 'private key full path'

~ / .Ssh / config की अनुमतियाँ: 0700

लेकिन यह मेरे लिए काम नहीं करता है।

अगर मैं मैन्युअल रूप से हर सत्र में कुंजी जोड़ता हूं, तो यह काम करता है, लेकिन मैं और अधिक सुरुचिपूर्ण तरीके से खोज रहा हूं (.bashrc में नहीं)।

संपादित करें :

  • सूक्ति क्लासिक (कोई प्रभाव नहीं) संस्करण का उपयोग करना ।

ssh-copy-ifदूरस्थ होस्ट के साथ SSH कुंजी जोड़ने के बाद , मुझे टर्मिनल (GNOME टर्मिनल 3.0.1) में निम्नलिखित संकेत मिलता है जब मैं लॉगिन कर रहा हूं:

ssh -i .ssh/Password-Protected-Key user@host
Enter passphrase for key '.ssh/Password-Protected-Key':
  • का उपयोग करते हुए बहुत बढ़िया विंडो प्रबंधक v3.4.10। मेरे पास पहले से ही था, gnome-keyring-dameonइसलिए मैंने दूसरे पिड और रन को मार दिया gnome-keyring-daemon --start | grep SOCK(मैंने इसे .profile में भी जोड़ा) (grep) आउटपुट:

SSH_AUTH_SOCK=/tmp/keyring-2LXXXX/ssh

मैंने ठीक उसी चरणों का पालन किया और इसी तरह मुझे कोई GUI ssh-add संवाद नहीं मिला।

संपादित करें 2 :

मैंने एकता पर Ubuntu 11.10 वर्चुअल मशीन से एक नया पासवर्ड प्रोटेक्टेड कुंजी बनाया है और मुझे अभी भी कोई पासवर्ड प्रॉम्प्ट नहीं मिल सकता है।

संपादित 3 : ऐसा लगता है कि यह बहुत बढ़िया विंडो प्रबंधक में काम नहीं कर सकता :( और संभवतः अन्य ..


1
पासवर्ड-सुरक्षित SSH कुंजी जोड़ने की बात क्या है? यह उद्देश्य को हरा देता है ...
मार्कोव

3
@Syzygy क्या आप हमेशा विभिन्न सेवाओं और ऐप्स से पासवर्ड टाइप करते हैं या आप अपने लॉगिन पासवर्ड के साथ अपना पासवर्ड अनलॉक करने के लिए कीरिंग का उपयोग कर रहे हैं?
pl1nk

किसी भी अधिक विचार / सवाल, pl1nk? बाउंटी ग्रेस पीरियड की समय सीमा जल्द समाप्त हो जाती है :-)
ish

@ मिक्स मैं सब कुछ है कि आप उल्लेख किया है और सभी की उम्मीद के रूप में जाँच की है। जैसा कि मैंने अपने अद्यतन पर उल्लेख किया है मैंने ग्नोम का भी उपयोग किया था। क्या मैं बग दर्ज कर सकता हूं?
pl1nk

आपको यहां कुछ सुराग मिल सकते हैं । ऐसा लगता है कि जिस क्रम में चीजें शुरू होती हैं, वह महत्वपूर्ण है, और सूक्ति-कीरिंग-डेमन के लिए डब करना भी महत्वपूर्ण है।
जॉन एस ग्रुबर

जवाबों:


2

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

आप द्वारा पासवर्ड बनाएँ:

  1. File-> New का चयन करें और Secure Shell Key का चयन करें। प्रेस जारी रखें।

  2. एक वर्णनात्मक नाम टाइप करें, और चुनें Create and set up

  3. आपको दो बार कीफ़्रेस दर्ज करने के लिए प्रेरित किया जाएगा (दूसरी बार यह जांचने के लिए कि आपने इसे पहली बार गलत दर्ज नहीं किया था।

  4. उस कंप्यूटर को दर्ज करें जिसमें सार्वजनिक कुंजी का उपयोग किया जाना चाहिए और उस कंप्यूटर पर उपयोगकर्ता नाम जिसके लिए आप कुंजी का उपयोग करेंगे। सार्वजनिक कुंजी को उस कंप्यूटर पर कॉपी किया जाएगा, यदि आवश्यक हो तो उस कंप्यूटर पर आपके पासवर्ड के लिए संकेत दिया जा सकता है।

अब My Personal Keysटैब कुंजी प्रदर्शित करेगा।

जब आप Lightdm में लॉग इन करते हैं, और जब आप पहली बार ssh के साथ कुंजी का उपयोग करते हैं, तो आपको keyphrase के लिए संकेत दिया जाएगा। इस डायलॉग बॉक्स में आप कीफ़्रेज़ प्रदान कर सकते हैं, Detailsनियंत्रण का चयन करें और पूछें कि जब भी आप लॉग इन होते हैं तो कीरिंग को अनलॉक कर दिया जाए - स्वचालित रूप से यह कुंजी प्रदान करना। दबाएँOK

यदि दूरस्थ कंप्यूटर में लॉगिंग के लिए कोई अन्य कुंजी उपलब्ध है, तो आपको इस तरह से संकेत नहीं दिया जा सकता है।

यह पूरा होने के बाद पहला Seahorse टैब Passwordsकुंजी नाम के लिए "अनलॉक पासवर्ड प्रविष्टि" सूचीबद्ध करेगा। इसे देखने के लिए " पासवर्ड: लॉगिन" से पहले त्रिकोण पर क्लिक करें ।


तो यह कार्यक्षमता यह विस्मयकारी WM के साथ काम नहीं कर रहा है मैं बहुत बढ़िया उपयोग करना जारी रखना चाहूंगा ताकि मैं अपने वर्कअराउंड का उपयोग करता रहूं।
pl1nk

19

पासवर्ड-संरक्षित SSH कुंजी बनाना सत्रों और रिबूट के दौरान बना रहता है

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

  • जब आप सार्वजनिक कुंजी को दूरस्थ सर्वर से जोड़ने के बाद कनेक्ट करते हैं, तो आपको GUI ssh-add संवाद मिलेगा:

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

  • त्रिकोण पर क्लिक करके "विवरण" का विस्तार करें, और आपको नीचे मिलेगा। डिफ़ॉल्ट "मैं लॉग आउट करते समय लॉक कीरिंग" करता हूं, जिसके लिए आपको प्रति सत्र एक बार पासवर्ड दर्ज करना होगा:

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

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

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

  • एक बार कुंजी पासफ़्रेज़ दर्ज करें और यह वही है - कुंजी आपके डेस्कटॉप वातावरण में प्रारंभिक सफल लॉगिन के माध्यम से प्रमाणित है।


अगर आप AwesomeWM का उपयोग कर रहे हैं

एक नए उपयोगकर्ता में भयानक डब्ल्यूडब्ल्यूएम की एक नई स्थापना के साथ परीक्षण किया गया

  • डिफ़ॉल्ट रूप से, बहुत बढ़िया WWM उपयोग करता है ssh-agent:

    $ निर्यात | grep एसएसएच
    घोषित -x SSH_AGENT_PID = "5479"
    घोषित -x SSH_AUTH_SOCK = "/ tmp / ssh-fWCKNnPq5440 / agent.5440"
    
  • काम करने के लिए उपरोक्त चरणों को प्राप्त करने के लिए, आपको gnome-keyring-daemonSSH प्रमाणीकरण डेमॉन के रूप में उपयोग करना चाहिए , न कि ssh- एजेंट के रूप में। जब आप lightdm का उपयोग करके लॉगिन करते हैं, PAM प्रारंभ होता है gnome-keyring-daemonजो आपके अनलॉक पासवर्ड के साथ एक लॉगिन कुंजी को अनलॉक करने का प्रयास करेगा, लेकिन आपको इसे चालू रखने और इसका उपयोग करने के लिए आपको कॉन्फ़िगरेशन में जोड़ना होगा।

  • निम्नलिखित को अपने अंत में जोड़ें ~/.xprofile:

      #! / Bin / bash
      eval $ (सूक्ति-कीरिंग-डेमन - स्टार्ट)
      SSH_AUTH_SOCK निर्यात करें
      GNOME_KEYRING_PID निर्यात करें
      GNOME_KEYRING_CONTROL निर्यात करें
    

~/.xprofileफ़ाइल में कमांड्स भयानक विंडो मैनेजर को शुरू करने से पहले xsession द्वारा निष्पादित किया जाएगा और इसे gnome-keyring-daemon --loginउपरोक्त पर्यावरण चर के माध्यम से PAM द्वारा शुरू की गई प्रक्रिया से जोड़ देगा।

  • लाइटआउट में लॉगआउट करें और वापस लॉग इन करें, और अब जब आप ऐसा करते हैं ssh user@host, तो आपको उपरोक्त पॉपअप मिलना चाहिए - अपनी निजी कुंजियों को ~ / .ssh / में डीकोड करने के लिए उपयोग करें और अपनी निजी कुंजियों को सूक्ति-कीरिंग लॉगिन कीरिंग में सहेजें।

किसी भी विंडो प्रबंधक / डेस्कटॉप वातावरण के लिए सामान्य समाधान

  • के gnome-keyring-daemonबजाय उपयोग करने के लिए है ssh-agent। इसके लिए, आपको दौड़ने की आवश्यकता होती है gnome-keyring-daemon और इसे शुरू कर दिया जाता है और या तो ssh-agentशुरू करने के बाद ऐसा करते हैं या बिल्कुल शुरू नहीं ssh-agentकरते हैं।

  • ssh(वास्तव में ssh-add) यह तय करता है कि SSH_AUTH_SOCKपर्यावरण वेरिएबल के मान के आधार पर कौन से ऑथेंटिकेशन एजेंट को कॉल किया जाए, जिसे टाइप करके चेक किया जा सकता हैexport | grep SOCK

  • यह ssh- एजेंट केSSH_AUTH_SOCK=/tmp/ssh-MMFyVlI22130/agent.22130 लिए फ़ॉर्म का है (आप अपनी कुंजी को बचाने में सक्षम होने के लिए क्या चाहते हैं)

  • लेकिन सूक्ति-कीरिंग-डेमन केSSH_AUTH_SOCK="/tmp/keyring-mEQB5g/ssh" लिए फॉर्म (जो आप चाहते हैं)

  • इसलिए मान की जाँच करें, और ps aux | grep keyringउस सूक्ति-कीरिंग-डेमन के साथ जाँच करें , और यदि ऐसा है, तो इसे परिणामों के साथ आरंभ करेंgnome-keyring-daemon --start

  • फिर आप कंसोल में संबंधित सहेजे गए पहचानों को टाइप करके जांच सकते हैं ssh-add -l- यदि यह "कोई एजेंट नहीं दिखाता है" तो आपने गनोम-कीरिंग-डेमन को कॉन्फ़िगर करने में गलती की।


वैसे मैंने यह नहीं देखा है! मैं इस संवाद को किस कमांड या बेहतर तरीके से उपयोग कर सकता हूं?
pl1nk

@izx का उपयोग करते समय ssh-add का उपयोग करना आवश्यक है?
जॉन एस ग्रुबर

@JohnSGruber नहीं, जब तक निजी चाबियाँ हैं ~/.ssh, तब तक उपयोग करने की कोई आवश्यकता नहीं है ssh-add- संवाद पहले उपयोग पर पॉप-अप होगा। ध्यान दें कि यह केवल यूनिटी / सूक्ति में काम करता है - मैंने चैट में पता लगाया कि ओपी विस्मयकारी रूप से उपयोग कर रहा है , जहां यह काम नहीं करता है!
ish

1
@ pl1nk: कृपया उत्तर के अंत की ओर भयानक डब्ल्यूडब्ल्यूएम के लिए अद्यतन समाधान देखें।
ish

@izx - आपके समग्र समर्थन के लिए धन्यवाद मेरे अद्यतन प्रश्न की जाँच करें।
pl1nk

2

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

  • के साथ एक निजी / सार्वजनिक कुंजी जोड़ी बनाएं ssh-keygen -t dsa
  • सार्वजनिक कुंजी को दूरस्थ मशीन पर कॉपी करें, आमतौर पर यह ~ / .ssh / अधिकृत_की (इसके लिए उपयोग ssh-copy-id) है
  • ssh-addरिमोट सिस्टम में लॉगिन करने से पहले चलाएँ , यह आपके पासफ़्रेज़ के लिए पूछेगा और इसे स्टोर करेगा
  • रिमोट सिस्टम में लॉगिन करें, कोई पासवर्ड आवश्यक नहीं है

ssh- एजेंट को .net पर अच्छी तरह वर्णित किया गया है, उदाहरण के लिए:

Ssh-Agent का एक अन्य लाभ यह है कि यदि आप दूरस्थ सिस्टम में लॉगिन करते हैं तो आप ssh -A user@domain.namedomain.name कंप्यूटर से तीसरे कंप्यूटर पर जा सकते हैं, जिसमें आपकी सार्वजनिक कुंजी के बिना एक तिहाई कंप्यूटर होता है, जो आपके लिए डोमेन की निजी कुंजी की नकल करता है। आपकी निजी कुंजी को देखता है, केवल एक बार की चुनौती / प्रतिक्रिया)।


मैं उसे कैसे कर सकता हूँ? आपके द्वारा भेजे गए निर्देशों से यह स्पष्ट नहीं है। इसके अलावा यह उबंटू से संबंधित है?
pl1nk

मैंने अपने पोस्ट को विस्तृत निर्देश के साथ संपादित किया है
फ्लोयड

आपका समाधान प्रति सत्र पासवर्ड को संग्रहीत करता है, इसके अतिरिक्त मेरे मामले में ऐसा लगता है कि यह सूक्ति-कीरिंग के साथ संघर्ष था जैसा कि आप मेरे उत्तर में देख सकते हैं।
pl1nk

@ pl1nk: तो आपको सत्र भर में संग्रहीत किए जाने वाले पासवर्ड की आवश्यकता है - यानी, प्रत्येक बूट के लिए केवल एक बार पूछा जाए ?
ish

हां, आपको प्रति सत्र एक बार पासवर्ड प्रदान करना होगा। पासवर्ड संरक्षित ssh कुंजियों के पीछे यह संपूर्ण विचार है, लॉगिन के बाद निजी कुंजी फ़ाइल तक पहुंचने में सक्षम होने से परे सुरक्षा की एक और परत प्रदान करना।
फ्लोयड

-1

आप उपयोग कर सकते हैं

ssh-add 'filename or fullpath'

यदि आपके पास एक कुंजी है तो आपको पासफ़्रेज़ के लिए कहा जाएगा

तो आप बाहर पासवर्ड के साथ कनेक्ट कर सकते हैं


1
जैसा कि मैंने अपने प्रश्न का उल्लेख किया है मैं और अधिक सुरुचिपूर्ण तरीके से खोज रहा हूं।
pl1nk

-2

यदि आप निजी कुंजी के साथ काम करना चाहते हैं:

ssh-keygen -t rsa -N ''

फिर:

scp के माध्यम .ssh/id_rsa.pubसे मशीन गंतव्य पर कॉपी करें.ssh/authorized_keys

scp .ssh/id_rsa.pub user@remote_machine:~/.ssh/authorized_keys

सब कुछ कर दिया।

पासवर्ड के बिना रिमोट मशीन से कनेक्ट करें:

ssh user@remote_machine

और हमारे पास पासवर्ड प्रॉम्प्ट नहीं है।


यह मुझसे हर बार कुंजी पासवर्ड मांगता रहेगा।
pl1nk

1
शायद इसलिए कि जब आप ssh-keygen -t rsa -N '' चलाते हैं, तो आप एक पासवर्ड डालते हैं। इसलिए जब आप उपरोक्त कमांड चलाते हैं, तो पासवर्ड न डालें, केवल "ENTER" कुंजी दबाएं।
ऑक्टोवियो फ़िलिप गोंकोलेव्स

वैसे मैं पासवर्ड वाली चाबियां रखना चाहूंगा। मैंने अपना प्रश्न अपडेट किया
pl1nk

1
ठीक है, मुझे पता नहीं है कि आप पासवर्ड के साथ ऐसा क्यों करना चाहते हैं। आम तौर पर इस अवधारणा का उपयोग केवल दूरस्थ मशीनों के साथ कनेक्शन बनाने के लिए किया जाता है जो प्रमाणीकरण के बिना क्लाइंट मशीन को पहचान सकते हैं। इसलिए, यदि आप इस परिदृश्य को नहीं चाहते हैं, तो आपको केवल एक सामान्य ssh कनेक्शन निष्पादित करना होगा। सही?
ऑक्टोवियो फ़िलिप गोंकोलेव्स

1
रिमोट मशीन पर अधिकृत_की के ऊपर अपनी सार्वजनिक कुंजी की प्रतिलिपि बनाने के लिए लोगों को बताना थोड़ा बल है ... बहुत बेहतर है कि ssh-copy-id उपयोगकर्ता @ remotemachine कमांड का उपयोग किया जाए, जो पहली बार पासवर्ड लॉगिन करने के लिए होगा और फिर APPEND कुंजी को अधिलेखित नहीं करता है।
फ्लोयड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.