SSH कुंजी मुझे पासफ़्रेज़ के लिए पूछ रही है?


35

मेरे पास एक सार्वजनिक / निजी कुंजी जोड़ी है। न तो उनमें से किसी भी प्रकार के पासफ़्रेज़ उनके साथ जुड़े हुए हैं।

जब भी मैं निजी या सार्वजनिक का उपयोग करने की कोशिश करता हूं (और मुझे पूरा यकीन है कि मुझे केवल सार्वजनिक कुंजी का उपयोग करना चाहिए), मैं पासफ़्रेज़ के लिए क्वियर हो जाता हूं, और फिर निश्चित रूप से कनेक्ट नहीं हो सकता।

किसी को भी किसी भी विचार है कि यह कैसे प्राप्त करें? क्या मैं कुछ कमांड पूरी तरह से टाइप कर रहा हूं? मैं एक सर्वर में ssh करने की कोशिश कर रहा हूं जो कि मेरे ~ / .shsh / config फाइल में सेटअप है (सही तरीके से, क्योंकि यह ठीक उसी सेटअप दूसरे सर्वर पर काम करता है) ~ / .ec2 / key.ppk में संग्रहीत कुंजी के साथ।

मैंने भी पासफ़्रेज़ के साथ एक नई निजी कुंजी उत्पन्न करने के लिए puttygen.exe का उपयोग करने की कोशिश की है, और फिर उस कुंजी का उपयोग कर रहा हूं, और जब मैं पासफ़्रेज़ टाइप करता हूं, तब भी यह विफल रहता है।

जवाबों:


28

सबसे पहले यह निजी कुंजी है जिसमें पास-वाक्यांश होगा। यह दूरस्थ सर्वर पर संग्रहीत सार्वजनिक कुंजी के विरुद्ध मान्य है।

सबसे अच्छा अनुमान यह है कि आपके द्वारा ppkओपनश के साथ एक पोटीन निजी कुंजी ( ) कुंजी प्रारूप का उपयोग करने की कोशिश की जा रही है, यह काम नहीं करता है .... अगर यह मामला है, तो PuTTYgen के पास ओपनश के लिए एक निर्यात विकल्प है।

ssh-rsa AAAAB3NzaC1y...... etc

मैं यह भी मानता हूं कि जिस सर्वर को आप अपने सार्वजनिक कुंजी को अधिकृत कुंजी फ़ाइल ( ~/.ssh/authorized_keysआम तौर पर) में सही ढंग से संग्रहीत करना चाहते हैं ।

एक और अनुमान यह होगा कि सही कुंजी का चयन नहीं किया जाएगा। कुछ चीजें जो मैं कोशिश करूंगा वो हैं:

कुंजी पास-वाक्यांश का उपयोग करके रीसेट करना ssh-keygen, इस तरह ...

$ ssh-keygen -f ~/.ec2/key.ppk -p

यह पुष्टि करेगा यदि वास्तव में आपकी कुंजी (या नहीं) उस पर पहले से ही पास-वाक्यांश है।

दूसरी बात, मैं आपके सार्वजनिक कुंजी को स्पष्ट रूप से आउटपुट निर्दिष्ट करते हुए एक क्रिया आउटपुट का उपयोग करके कनेक्ट करने का प्रयास करूंगा:

$ ssh host -i ~/.ec2/key.ppk -vvv

इससे आपको पता चल जाएगा कि क्या चल रहा है।


सही है, यह पोटीन से उत्पन्न एक कुंजी है जो पोटीन में काम करती है। जब मैं एक ही सर्वर (साइबरगन उदाहरण को होस्ट करने वाली मशीन से) में डालता हूं तो यह ठीक उसी कुंजी के साथ ठीक काम करता है। जब मैं cygwin से ssh के माध्यम से जुड़ने की कोशिश करता हूं, तो यह बम हो जाता है। मैं उलझन में हूं कि यह काम कैसे किया जाए।
llaskin

6
मुझे लगता है कि mrverrall के बिंदु यह है कि PuTTY निजी कुंजी के लिए फ़ाइल प्रारूप OpenSSH (cygwin में ssh क्लाइंट) के लिए उपयोग किए जाने वाले फ़ाइल प्रारूप के समान नहीं है। इसलिए ओपनएसएसएच निजी कुंजी डेटा का उपयोग करने में विफल हो रहा है क्योंकि यह पता नहीं लगा सकता है कि डेटा का क्या मतलब है। लेकिन PuTTY में एक "निर्यात" विकल्प है, जिससे आप आवश्यक "पीईएम" प्रारूप में डेटा प्राप्त कर सकते हैं।
फिल पी

यह त्रुटि भी दी जाती है यदि फ़ाइल सही प्रारूप में है - तो दोहरी और ट्रिपल जांच जो आपने कॉपी की है और इसे ठीक से चिपकाया है यदि इसे मैन्युअल रूप से बना रहे हैं।
डैनियल सोकोलोव्स्की

क्या ssh-rsa AAAAB3NzaC1y...... etcओपनश से प्रारूप सही है? मेरी निजी कुंजी में यह प्रारूप है। शीर्ष लेख बताता है: PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: imported-openssh-key Public-Lines: 6लेकिन फ़ाइल को id_rsa फ़ाइल के रूप में संग्रहीत किया जाता है। क्या इसका मतलब यह है कि यह अभी भी .ppk प्रारूप में है, भले ही फ़ाइल का नाम सिर्फid_rsa
अल्फा_989

यहां विभिन्न स्वरूपों के लिए उत्तर मिला। मेरे मामले में फ़ाइल के विस्तार के बावजूद .ppk, यह अभी भी पोटीन प्रारूप में नहीं था, जिसने मुझे भ्रमित कर दिया, क्योंकि यह सभी प्रकार की त्रुटियों को दिखा रहा था, लेकिन मुझे कोई सीधा संकेत नहीं दे रहा था कि समस्या कुंजी के प्रारूप के साथ थी : stackoverflow.com/a/44391850/4752883
अल्फा_989

18

आप ssh-agent चला सकते हैं। एक चर्चा के लिए यहाँ देखें ।

लघु संस्करण जो मेरे लिए काम किया (बैश में):

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-rnRLi11880/agent.11880; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11881; export SSH_AGENT_PID;
echo Agent pid 11881;

मैंने इसे ग्रहण करने वाली 3 पंक्तियाँ लीं और उन पर अमल किया। ऐसा करने का एक और तरीका है -s का आउटपुट लेना:

$ eval `ssh-agent -s`

फिर मैंने इसमें अपनी साख जोड़ी:

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/me/.ssh/id_rsa: 
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

अब एजेंट मेरे पास मेरे पासफ़्रेज़ में टाइप करने के बजाय क्रेडेंशियल्स की आपूर्ति करता है।

मेरा मानना ​​है कि जब शेल करता है तो ssh- एजेंट चला जाता है, इसलिए इसे अधिकतम सुविधा के लिए स्टार्टअप पर स्क्रिप्ट किया जाना चाहिए। मैंने जो लिंक साझा किया है वह स्क्रिप्टिंग का भी वर्णन करता है।


4

जब आप अपनी सार्वजनिक कुंजी सेट करते हैं, तो आप संभवतः (शायद अनजाने में) इसे पासफ़्रेज़ के साथ सेट करते हैं।

आपको संभवतः नए सिरे से शुरू करने की आवश्यकता है - मैंने पुट्टीजेन का उपयोग नहीं किया है, लेकिन आप अपनी .ssh निर्देशिका में सार्वजनिक कुंजी को हटा सकते हैं (या नाम बदल सकते हैं), ssh-keygenएक नया जेनरेट करने के लिए उपयोग करें (सुनिश्चित करें कि पासफ़्रेज़ प्रदान करने के लिए नहीं), और फिर जिस सर्वर से आप कनेक्ट करने का प्रयास कर रहे हैं, उस पर public_key को अधिकृत_की फ़ाइल से साझा करें।

आपको अपने पुराने पासफ़्रेज़-कुंजी को आपके द्वारा कनेक्ट किए जा रहे सर्वर पर अधिकृत-कुंजी फ़ाइल से हटाने की आवश्यकता हो सकती है।


4

जांचें कि निजी कुंजी id_rsaमें अंत में अतिरिक्त लाइन ब्रेक नहीं है, कुछ मामलों में अतिरिक्त लाइन ब्रेक ssh-keygen पासफ़्रेज़ के लिए पूछेंगे, यह प्रयास करें:

sed  '/^$/d' /path/to/key > id_rsa

परीक्षा:

ssh-keygen -yf id_rsa

2
OMG यह मेरी समस्या थी। -----END RSA PRIVATE KEY-----यह एक सेट पर पासफ़्रेज़ के लिए पूछने की वजह से एक अतिरिक्त नई पंक्ति थी, जिसमें एक सेट नहीं था!
edk750

3

जाँच करने के लिए एक बात, अगर आपकी sshd_config फ़ाइल में StrictModes = हाँ है, तो $ HOME निर्देशिका / $ HOME / .ssh निर्देशिका को समूह या अन्य के लिए विश्व योग्य नहीं होना चाहिए। अन्यथा प्रमाणीकरण विफल रहता है चाहे कोई भी हो।


1

मैंने अपने ~ / .ssh / id_rsa.pub के साथ गलती से अपने ~ / .sh / id_rsa फ़ाइल को ओवरराइट करने की गलती कर दी। ऐसा करने से ssh पास वाक्यांश के लिए पूछेगा।


0

मैं दूसरे दिन इस समस्या में भाग गया। विशेष रूप से, मैं एक निजी AWS कुंजी को एक मशीन से दूसरी मशीन में कॉपी / पेस्ट करने की कोशिश कर रहा था।

मुझे पहले या आखिरी चरित्र को याद करने की बुरी आदत है। यह पता चला है कि यदि आप अपनी निजी कुंजी के अंत में हर हाइफ़न को नहीं पकड़ते हैं-भले ही इसका मुख्य पाठ से कोई लेना-देना नहीं है - आपको निजी कुंजी के लिए पासफ़्रेज़ के लिए संकेत दिया जाएगा जब तक कि प्रत्येक वर्ण को जोड़ न दें आपके द्वारा कॉपी की गई कुंजी (मेरे मामले में इसका मतलब कुंजी के अंत में एक एकल हाइफ़न जोड़ना है।)

मुझे लगता है कि इसका मतलब यह है कि टर्मिनल विंडो के बीच कॉपी और पेस्ट करने के बजाय तार के पार पाठ फ़ाइल को एसएसएच करने के लिए सबसे अच्छा अभ्यास है।


0

OSX पर मैं बस चलाने में सक्षम था:

$ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/me/.ssh/id_rsa: `Identity added: /Users/mikekilmer/.ssh/id_rsa (/Users/mikekilmer/.ssh/id_rsa)

पासवर्ड कीचेन एक्सेस एप्लिकेशन द्वारा संग्रहीत किया गया था, जो कि एप्लीकेशन> यूटिलिटीज फ़ोल्डर में है। मैं बस id_खोज क्षेत्र में प्रवेश किया ।


0

सर्वर पर लॉग फ़ाइलों को देखने का प्रयास करें। देखें / var / log / प्रमाणन (है, हालांकि मैंने देखा है कुछ ऑपरेटिंग सिस्टम का उपयोग पोर्टेबल OpenSSH और उपयोग /var/log/auth.log जैसे, / var / log / OpenSSH के लिए authlog) लॉग और उस फ़ाइल के अंत की जाँच करें।

सबसे सामान्य कारण जो मैंने देखे हैं वे गलत अनुमतियाँ हैं (जैसा कि TD1 के उत्तर द्वारा नोट किया गया है ), हालाँकि अन्य मुद्दे सार्वजनिक कुंजी (सर्वर पर संग्रहीत) सही फ़ाइल में नहीं होने के कारण हो सकते हैं, या उस कुंजी पर टिप्पणी नहीं की जा रही है, या एक गलत उपयोगकर्ता नाम।

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

यदि लॉग फ़ाइल को देखने से आप तुरंत किसी रिज़ॉल्यूशन पर नहीं जाते हैं, तो मैं एक नया प्रश्न (क्योंकि यह एक सामान्यीकृत प्रश्न है) पोस्ट करने का सुझाव देता हूं, जिसमें लॉग फ़ाइल से विशिष्ट विवरण शामिल हैं, ताकि अधिक विशिष्ट निर्देश प्रदान किए जा सकें।


0

मेरी टीम में, जब ऐसा होता है तो यह स्थानीय स्तर पर किसी भी चीज के साथ नहीं होता है। उपयोगकर्ता के ssh कुंजी और / या एक्सेस को उस सर्वर पर सही ढंग से कॉन्फ़िगर नहीं किया गया है जिसे वे (हमारे मामले में एक होस्टिंग प्लेटफ़ॉर्म) से कनेक्ट कर रहे हैं। किसी कारण से यह गैर-मौजूद ssh कुंजी के लिए संकेत देता है।

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