जब तक आप विशेष रूप से इसे अन्यथा करने के लिए नहीं कहते हैं, एसएसएच प्रमाणीकरण के ~/.ssh/id_<type>
लिए (उदाहरण के लिए ~/.ssh/id_rsa
) प्रदान करता है।
आपने एक गैर-मानक स्थान पर एक कुंजी बनाई है (~ / .sh के भीतर, लेकिन एक गैर-मानक फ़ाइल नाम के साथ)।
चूंकि सार्वजनिक कुंजी प्रमाणीकरण आपके लिए सामान्य काम करता है, इसलिए सबसे पहले मैं यह देखूंगा कि एसएसएच प्रमाणीकरण के लिए सही कुंजी प्रदान करता है। आप सत्यापित कर सकते हैं कि वर्बोज़ (डीबगिंग) आउटपुट के एक स्तर को चालू करने के ssh
लिए -v
स्विच के साथ चलकर। संदेशों के बीच, आपको कुछ इस तरह देखना चाहिए:
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/you/.ssh/something
देखिए कि यह किस सार्वजनिक कुंजी को पेश कर रहा है। ( Offering ... public key
विभिन्न कुंजी फ़ाइलों के लिए आपके पास कई लाइनें हो सकती हैं ।) यदि यह आपकी नई बनाई गई कुंजी की पेशकश नहीं करती है, तो वह कुंजी कभी भी प्रमाणीकरण के लिए उम्मीदवार नहीं होगी।
यदि आपकी नई बनाई गई कुंजी की पेशकश नहीं की गई है, तो -i
स्विच को जोड़कर, SSH को इसे पेश करने के लिए स्पष्ट रूप से बताने का प्रयास करें। उदाहरण के लिए, ssh -i ~/.ssh/my-ssh-key -v username@hostname
। ध्यान दें कि SSH .pub
खुद को उस नाम से जोड़ेगा जहां उसे सार्वजनिक कुंजी तक पहुंचने की आवश्यकता है, इसलिए आप निजी कुंजी फ़ाइल के लिए नाम देते हैं।
यदि वह काम करता है, तो आप अपने ~/.ssh/config
एसएसएच को बताने के लिए संपादित कर सकते हैं कि मेजबान को उस कुंजी की पेशकश करें। उदाहरण के लिए, आप निम्न की तरह एक ब्लॉक जोड़ सकते हैं। अपने पास मौजूद किसी भी Host *
ब्लॉक के ऊपर इसे जोड़ना सुनिश्चित करें ।
Host hostname
User username
IdentityFile ~/.ssh/my-ssh-key
तब आपको बस का उपयोग करके कनेक्ट करने में सक्षम होना चाहिए ssh hostname
।
देखें man 1 ssh
और man 5 ssh_config
अधिक जानकारी के लिए।