मेरे द्वारा SSH सार्वजनिक कुंजी को अधिकृत_कीप में कॉपी करने के बाद सर्वर पासवर्ड मांगता रहता है


44

मेरे पास एक Ubuntu सर्वर है, जो एक क्लाउड में चल रहा है। मैंने एक उपयोगकर्ता ( git) बनाया । फ़ोल्डर में /home/git, मैंने .ssh/dir, और authorized_keysफ़ाइल बनाई है ।

लेकिन, जब मैं अपनी SSH सार्वजनिक कुंजी को authorized_keysफ़ाइल में डालता हूं , तो सर्वर मुझसे पासवर्ड पूछता रहता है।

मैंने गलत क्या किया?


आप कहां ypur जनता रखते हैं? उपयोगकर्ता में या जड़ में? आप इसे कैसे आरोपित करते हैं? as ssh <you> @ <server> o <git> @ <server> या root @ <server> .. कि जाँच करें और अधिक जानकारी जोड़ें।
maniat1k

जवाबों:


42

सर्वर की तरफ, ssh डेमॉन त्रुटियों को लॉग इन करेगा /var/log/auth.log, इसलिए उस फ़ाइल को देखें कि क्या रिपोर्ट किया जा रहा है।

क्लाइंट की ओर से, कनेक्शन स्थापित करते समय आप वर्बोसिटी बढ़ाने के लिए -vध्वज ( -vvया -vvv) जोड़ सकते हैं । आप इस तरह से अपनी समस्या की पहचान करने में सक्षम हो सकते हैं।

यहां अन्य चीजें जांचने के लिए हैं।

  • सुनिश्चित करें कि /home/git/.ssh/authorized_keysस्वामित्व में है git
  • सुनिश्चित करें कि /home/git/.ssh/authorized_keys600 का एक मोड है ( -rw-------)।

/etc/ssh/sshd_configफ़ाइल भी चेक करें ।

  • PubkeyAuthentication के लिए सेट किया जाना चाहिए yes
  • वह AuthorizedKeysFileनिर्देश भी है जो उस मार्ग को निर्धारित करता है जहां अधिकृत कुंजी स्थित होनी चाहिए। सुनिश्चित करें कि यह टिप्पणी या डिफ़ॉल्ट पर है %h/.ssh/authorized_keys

धन्यवाद! मैं इस विकल्प की कोशिश करूंगा और प्रतिक्रिया के लिए बाद में आऊंगा!
लुइस डालमोलिन

यदि आप एक /var/log/auth.logफ़ाइल नहीं देखते हैं तो आप क्या करते हैं ? क्या इसे चालू करने का कोई तरीका है?
स्टीव रॉबिंस

1
यदि आपके पास /var/log/auth.log
CoverosGene

मूर्खतापूर्ण गलती, मेरे पास .pub फ़ाइल सिर्फ सर्वर से .ssh फ़ोल्डर के अंदर थी, जिसे मैं कनेक्ट करना चाहता था। इसे अधिकृत_की फ़ोल्डर में ले जाना सुनिश्चित करें।
सेंटरऑर्बिट

मुझे अपने होम डायरेक्टरी से ही ग्रुप राइटिंग की परमिशन लेनी पड़ी। फिर मैंने ssh को फिर से शुरू कियाsudo service ssh restart
डायलन पियर्स

19

यह भी सुनिश्चित करें कि आपकी उपयोगकर्ता होम डायरेक्टरी (आपके मामले में, / होम / गिट) आपके द्वारा केवल लेखन योग्य है। मेरे पास यह मुद्दा एक बार था क्योंकि मेरे घर की निर्देशिका समूह-लेखन योग्य थी। /var/log/auth.log ने इसमें कहा: "प्रमाणीकरण ने इनकार कर दिया: निर्देशिका के लिए खराब स्वामित्व या मोड / होम / चक"। (यह सुनिश्चित करने के लिए है कि यह किसी अधिकृत_की फ़ाइल का उपयोग नहीं करता है जो आपके अलावा किसी और व्यक्ति के साथ खिलवाड़ कर रहा है!)


हालांकि यह निश्चित रूप से सहायक है, मुझे लगता है कि यह xeyes के उत्तर के अतिरिक्त है
gertvdijk

1
हे भगवान, बहुत बहुत धन्यवाद! मेरी आँखें जल रही थीं क्योंकि सारी खोज मैंने गूगल पर की थी। अंत में यह काम किया !. बहुत बहुत धन्यवाद।
GTRONICK

आदमी धन्यवाद! मैं एक समाधान के लिए खोज करने में घंटे बिताता हूं ... और इससे मेरी सभी समस्याओं का समाधान हो गया।
अफारिया

हाँ। वह यह था। मुझे खुशी है कि मैंने अगला उत्तर नीचे पढ़ने का फैसला किया
कटुशाई

/ Etc / passwd में यह भी जांचें कि उपयोगकर्ता की होम डायरेक्टरी क्या है। मेरी विचित्र समस्या यह नहीं थी एक मानक एक
drodsou

5

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

sshप्यूबिक प्रमाणीकरण का उपयोग करके (क्लाइंट-साइड) बनाने के लिए, sshकमांड में कुछ विकल्प जोड़ें :

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

यदि यह काम करता है, तो आप PasswordAuthentication=noविकल्प को स्थायी रूप से ssh क्लाइंट कॉन्फिग फाइल /etc/ssh/ssh_configसिस्टम-वाइड या ~/.ssh/configयूजर-विशिष्ट (विवरण पर, देखें man ssh_config) में सेट कर सकते हैं ।


1
डिफ़ॉल्ट रूप से /etc/ssh/ssh_configडेबियन / उबंटू सिस्टम पर सभी एसएसएच क्लाइंट कॉन्फ़िगरेशन ( ) पहले से ही पसंद करते हैं PubkeyAuthentication और कोशिश करते हैं कि सबसे पहले आप देखेंगे जब वर्जन sshमोड में इनवॉइस करते हैं।
gertvdijk

3

क्या आप अपने स्थानीय मशीन पर ~ / .ssh / config का उपयोग कर रहे हैं? जब मैं कॉन्फ़िग फ़ाइल में IdentityFile निर्देश का उपयोग करता हूं और सार्वजनिक कुंजी को इंगित करता हूं तो मैं इस समस्या में चला गया हूं। उदाहरण के लिए:

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect

2

यदि आपका होम फोल्डर एन्क्रिप्ट किया गया है तो authorized_keysलॉगिन से पहले आपकी फाइल पढ़ने योग्य नहीं है। आपको इसे अपने घर के बाहर ले जाना होगा।

यहां बताया गया है और कैसे करना है: https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troublesourcing


1

दूसरी बात यह है कि आपकी सार्वजनिक कुंजी में अतिरिक्त गाड़ी के रिटर्न हैं या नहीं। मैंने /var/log/auth.log की समीक्षा करने के लिए ऊपर दी गई सलाह का पालन किया और कुंजी पढ़ते समय एक त्रुटि देखी। चाबी चार की बजाय लगभग दो लाइन लंबी थी। कुंजी में एम्बेडेड अतिरिक्त गाड़ी रिटर्न थे।

Vi संपादक का उपयोग करते समय, लाइनों में शामिल होने के लिए शिफ्ट-जे का उपयोग करें और कुंजी स्ट्रिंग में अतिरिक्त स्थान मिटा दें।


1
मैं ट्रिपल अनुमतियों की जाँच की और sshd_config। आधे घंटे के लिए दीवार के खिलाफ मेरा सिर पीटा। यह मेरी भूल थी! किसी भी तरह, मैं एक अतिरिक्त लाइनब्रेक के साथ मेरे द्वारा संपादित की जाने वाली सभी फाइलों को समाप्त करने की आदत डाल चुका हूं। यहां तक ​​कि एक कुंजी और एक गाड़ी के अंत में वापसी के साथ , यह प्राधिकरण को गड़बड़ाने के लिए पर्याप्त है।
jhhorn424

सुनिश्चित करें कि आपके पास ----- END RSA निजी कुंजी ----- बिट भी है।
tobych

1

यदि आपके पास कई निजी कुंजियाँ हैं, तो अपने ssh कनेक्शन कमांड पर -v स्विच का उपयोग करके यह देखें कि आपकी अन्य प्राथमिक कुंजियाँ कनेक्ट करने के लिए uesd की जा रही हैं या नहीं। यदि वे नहीं हैं, तो ssh क्लाइंट को निम्नलिखित कमांड के साथ उनका उपयोग करने के लिए कहें:

ssh-add path/to/private/key

1

आप अपनी कुंजी को SSH एजेंट में भी जोड़ सकते हैं:

u@pc:~$ ssh-agent bash
u@pc:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)

0

यह भी हो सकता है कि आप बुला रहे हों

sudo git clone gituser@domain:repo.git

जहाँ रूट उपयोक्ता ssh कुंजी को जोड़ा नहीं गया authorized_keysहैgituser


0

उबंटू 18.04.02 एलटीएस चलाने वाली एक मशीन पर ~/.ssh600 की अनुमति निर्धारित करने का सुझाव मेरे काम नहीं आया। मुझे 700 पर अनुमतियां सेट करनी थीं, और फिर चीजें ठीक हुईं।


0

मेरे पास मेरी .ssh / निर्देशिका और अधिकृत_की फ़ाइल अनुमतियाँ सही थीं लेकिन एक अलग, स्व-प्रेरित समस्या के कारण इस "पासवर्ड के लिए संकेत" का सामना करना पड़ा।

मैंने अपने स्थानीय id_rsa.pub से सर्वर पर अधिकृत_की फ़ाइल में जानकारी कॉपी करने के लिए माउस-आधारित हाइलाइट और कॉपी / पेस्ट का उपयोग किया था। इसने डेटा को सफलतापूर्वक एक ही लाइन के रूप में कॉपी किया, लेकिन वहाँ दिखाई लाइनों के अंत में अवांछित स्थान जो कि vi के साथ फ़ाइल को संपादित करते समय देखने में कठिन थे। एक बार जब मैंने इन अवांछित स्थानों को हटा दिया तो मैं बस ठीक कर सकता था।


0

तो मेरे लिए क्या हुआ कि मेरी स्थानीय मशीन से एक्सेस करने के लिए मेरे पास 2 वीएम हैं (2 चाबियाँ id_rsa.pub और id_rsa2.pub)। मुझे महसूस हुआ कि मेरा ssh कनेक्शन किसी भी ssh user@xx.xx.xx.xx कनेक्शन के लिए डिफ़ॉल्ट रूप से id_rsa.pub का उपयोग कर रहा है। मैंने एक कॉन्फ़िगर फ़ाइल जोड़कर अपनी समस्या को हल किया और पहचान को निम्नलिखित जैसे प्रत्येक होस्ट के लिए उपयोग करने के लिए निर्दिष्ट किया है:

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.