नई कुंजी बनाने के बिना मैं SSH कुंजी के लिए पासफ़्रेज़ कैसे निकालूं?


1033

मैंने अपने लैपटॉप पर एक नई SSH कुंजी बनाते समय एक पासफ़्रेज़ सेट किया। लेकिन, जैसा कि मुझे अभी पता चला है, यह काफी दर्दनाक है जब आप SSH के ऊपर एक दूरस्थ स्थान ( Git और SVN ) को एक घंटे में कई बार करने की कोशिश कर रहे हैं ।

एक तरीका मैं सोच सकता हूँ, मेरी SSH कुंजियों को हटा दें और नया बनाएँ। क्या पासफ़्रेज़ को हटाने का एक तरीका है, जबकि अभी भी वही चाबियाँ रखते हैं?


9
मुझे लगता है कि सख्त जवाब वास्तव में टॉर्स्टन मारेक की प्रतिक्रिया है। Ssh- एजेंट चाल वह हो सकती है जिसे आप ढूंढ रहे हैं, लेकिन यह एक अलग प्रश्न का उत्तर है।
22'08

1
पासफ़्रेज़ केवल निजी SSH कुंजी को अनलॉक करने के लिए एक कुंजी नहीं है, बल्कि एन्क्रिप्शन तंत्र का एक हिस्सा है। एक हिस्सा आपकी SSH कुंजी है, अन्य - पासफ़्रेज़ मैन्युअल रूप से दर्ज किया गया है। केवल अगर दोनों हिस्से सही हैं तो उनसे मक्खी पर बनाई गई समग्र कुंजी वैध होगी। तो, अन्य पासफ़्रेज़ अन्य SSH कुंजी से मेल खाती है (और कोई पासफ़्रेज़ "अन्य पासफ़्रेज़" का विशेष मामला नहीं है)।
पॉल

97
इस तरह के प्रश्नों को बंद करना वैसा ही है जैसे प्रोग्रामिंग भाषाओं में विदर साइड इफेक्ट्स की अनुमति दी जानी चाहिए क्योंकि वे 'शुद्ध' हैं या नहीं। शुद्धतावादी हमेशा अमोक को चलाते हैं, जबकि अन्य कोई लानत नहीं देते क्योंकि यह एक सहायक विशेषता है और जीवन को आसान बनाती है। ssh की जरूरत है, यहां तक ​​कि कठिन है यह सख्ती से संबंधित प्रोग्रामिंग नहीं है ... ऐसे प्रश्नों को बंद न करें। : |
sjas

जवाबों:


1929

संक्षिप्त जवाब:

$ ssh-keygen -p

यह आपको कीफाइल लोकेशन, पुराने पासफ़्रेज़ और नए पासफ़्रेज़ (जिसमें कोई पासफ़्रेज़ न होने के लिए खाली छोड़ा जा सकता है) दर्ज करने के लिए संकेत देगा।


यदि आप बिना किसी संकेत के यह सब एक पंक्ति में करना चाहते हैं:

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

महत्वपूर्ण: सावधान रहें कि जब आदेशों को निष्पादित किया जाता है तो वे आम तौर पर आपके लॉग इन होंगे~/.bash_history फ़ाइल (या समान) में सादे पाठ में दिए गए सभी तर्कों सहित प्रदान किए (अर्थात इस मामले में पासफ़्रेज़)। इसलिए, यह अनुशंसा की जाती है कि आप पहले विकल्प का उपयोग करें जब तक कि आपके पास अन्यथा करने का कोई विशिष्ट कारण न हो।

ध्यान दें कि आप अभी भी -f keyfileनिर्दिष्ट किए बिना उपयोग कर सकते हैं -Pऔर न ही -Nकिफाइल डिफॉल्ट करता है~/.ssh/id_rsa , इसलिए कई मामलों में, इसकी आवश्यकता भी है।

आप ssh-agent का उपयोग करने पर विचार कर सकते हैं, जो पासफ़्रेज़ को कुछ समय के लिए कैश कर सकता है। Gpg- एजेंट के नवीनतम संस्करण भी प्रोटोकॉल का समर्थन करते हैं जो ssh- एजेंट द्वारा उपयोग किया जाता है।


464
स्पष्ट होने के लिए: आप बस ssh-keygen -pएक टर्मिनल में चला सकते हैं । यह तब आपको एक कीफ़ाइल (मेरे लिए सही फ़ाइल के लिए डिफ़ॉल्ट) के लिए संकेत देगा ~/.ssh/id_rsa, पुराना पासफ़्रेज़ (अब आपके पास क्या है) और नया पासफ़्रेज़ (कुछ भी नहीं दर्ज करें)।
हेनरिक एन

34
पूर्व। :ssh-keygen -p -P oldpassphrase -N "" -f ~/.ssh/id_rsa
फेडिर RYKHTIK

24
-1 उपयोगकर्ता को टर्मिनल में अपना पासवर्ड टाइप करने और इसके माध्यम से सुलभ बनाने के लिए ~/.bash_history। टाइप करना बेहतर है:$ cd ~/.ssh && ssh-keygen -f id_dsa -p
betoharres

5
आप लोग ध्यान दें कि यदि आप कमांड में प्रवेश करते हैं तो शेल ने एक (सफ़ेद) स्थान शुरू किया है जो कमांड~/.bash_hstory Ie में रिकॉर्ड नहीं किया गया है । `ssh-keygen -p -P oldpassphrase -N" "-f ~ / .ssh / id_rsa` का उपयोग करें और आप ठीक हैं (जब तक कि आपके पास अन्य keylogger नहीं है)। आप इतिहास से रिकॉर्ड भी निकाल सकते हैं ..
विशाल

14
यह कहने वाली एक पंक्ति जोड़ने लायक हो सकती है कि यह मौजूदा फ़ाइल को अधिलेखित कर देगी और एक नए स्थान के लिए संकेत नहीं देगी।
लार्स फ्रेंक

46

$ ssh-keygen -p मेरे लिए काम किया

खुल गई गिट बश। विगत:$ ssh-keygen -p

डिफ़ॉल्ट स्थान के लिए एंटर दबाएं।

पुराना पासफ़्रेज़ दर्ज करें

नया पासफ़्रेज़ दर्ज करें - BLANK

नए पासफ़्रेज़ की पुष्टि करें - BLANK

बूम पुश के लिए पासफ़्रेज़ दर्ज करने का दर्द दूर हो गया था।

धन्यवाद!


यदि आप हिट करते हैं $ ssh-keygen -pऔर आपकी कुंजी डिफ़ॉल्ट स्थान पर नहीं है (/User/yourname/.ssh/id_rsa) का कहना है, तो आप /Users/yourname/.ssh/yourkeyजब संकेत दिया जाए तो जवाब दे सकते हैं
Chigozie Orunta

37

आप निम्न को अपने .bash_profile (या समतुल्य) में जोड़ना चाह सकते हैं, जो लॉगिन पर ssh-agent शुरू होता है।

if [ -f ~/.agent.env ] ; then
    . ~/.agent.env > /dev/null
    if ! kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
        echo "Stale agent file found. Spawning new agent… "
        eval `ssh-agent | tee ~/.agent.env`
        ssh-add
    fi 
else
    echo "Starting ssh-agent"
    eval `ssh-agent | tee ~/.agent.env`
    ssh-add
fi

कुछ लिनक्स डिस्ट्रोस (उबंटू, डेबियन) पर आप उपयोग कर सकते हैं:

ssh-copy-id -i ~/.ssh/id_dsa.pub username@host

यह जनरेट की गई आईडी को एक रिमोट मशीन पर कॉपी कर लेगा और रिमोट कीचेन में जोड़ देगा।

आप यहाँ और यहाँ पढ़ सकते हैं ।


7
क्या आधुनिक वितरण बॉक्स से बाहर ssh- एजेंट शुरू नहीं करता है?
ट्रॉल्स अरविन

कुछ लिनक्स डिस्ट्रोस (उबंटू, डेबियन) पर आप उपयोग कर सकते हैं: ssh-copy-id -i ~ / .ssh / id_dsa.pub यूजरनेम @ होस्ट मान लें कि आपके पास इस तरह से पहुंच है। और यद्यपि यह 2008 से है, शायद इसे id_rsa.pub को संदर्भित करने के लिए संपादित किया जाना चाहिए (हाँ मैं इसे संपादित कर सकता हूं लेकिन मुझे दूसरों के काम करने में सहज महसूस नहीं होता है - और यह esp कुछ इस तरह से होता है)।
प्रातः

@ ट्रॉल्सअर्विन हां। लेकिन ओटोह कई बार ऐसा होता है, जब तक उसे मार दिया जाता है (हालांकि जो परिस्थिति मेरे सामने आई है वह तब तक समझ में नहीं आती है - जब तक कि शायद X11 में कोई समस्या न हो और आपको इसे पुनः आरंभ करना पड़े ... ऐसा एक उदाहरण हो सकता है)। उस स्थिति में आपको इसे 'फिर से बनाना' पड़ता है।
प्रिएफ्टन

8

पासफ़्रेज़ को बदलने या निकालने के लिए, मुझे अक्सर केवल pऔर fझंडे में पास करना सबसे सरल लगता है , फिर सिस्टम मुझे पासफ़्रेज़ की आपूर्ति करने के लिए संकेत देता है:

ssh-keygen -p -f <name-of-private-key>

उदाहरण के लिए:

ssh-keygen -p -f id_rsa

यदि आप पासफ़्रेज़ को हटाना चाहते हैं तो एक खाली पासवर्ड दर्ज करें।

पासवर्ड हटाने या बदलने के लिए एक नमूना कुछ इस तरह दिखता है:

ssh-keygen -p -f id_rsa
Enter old passphrase: 
Key has comment 'bcuser@pl1909'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

पासफ़्रेज़ को किसी कुंजी से जोड़ने पर जिसमें पासफ़्रेज़ नहीं है, रन कुछ इस तरह दिखता है:

ssh-keygen -p -f id_rsa
Key has comment 'charlie@elf-path'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

3

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


2

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

ssh-keygen -K

इसमें जोड़ें ~/.ssh/config

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