SSH सार्वजनिक कुंजी सर्वर पर नहीं भेजेगी


33

मैं कुछ घंटों के लिए इसके साथ संघर्ष कर रहा हूं इसलिए किसी भी मदद की बहुत सराहना की जाती है ...

मेरे पास 2x सर्वर हैं जिनमें से मैं sshOSX से सार्वजनिक कुंजी के साथ दोनों कर सकता हूं , इसमें कोई समस्या नहीं है, इसलिए मैं निश्चित हूं कि सब कुछ अच्छा है sshd_config

मैं एक क्रॉन जॉब को कॉन्फ़िगर करने का प्रयास कर रहा हूं rsync दो सर्वरों को सिंक करने के और sshएक सार्वजनिक कुंजी का उपयोग करके सर्वर ए में सर्वर बी (बैकअप) की आवश्यकता है ।

मैं अपने जीवन के लिए काम नहीं कर सकता क्योंकि यह मेरी सार्वजनिक कुंजी नहीं खोजता - वे अंदर हैं ~/.ssh/ (यानी। /root/.ssh) में हैं और सभी फ़ाइल अनुमतियां A & B के लिए सही हैं।

यह आउटपुट है:

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug3: no such identity: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

यह भी ध्यान दें कि यह उन निजी कुंजियों की तलाश में है जो मौजूद नहीं हैं ...

drwx------. 2 root root 4096 May 25 10:15 .
dr-xr-x---. 4 root root 4096 May 24 18:52 ..
-rw-------. 1 root root  403 May 25 01:37 authorized_keys
-rw-------. 1 root root    0 May 25 01:41 config
-rw-------. 1 root root 1675 May 25 02:35 id_rsa_tm1
-rw-------. 1 root root  405 May 25 02:35 id_rsa_tm1.pub
-rw-------. 1 root root  395 May 25 02:36 known_hosts

2
कृपया हमें का उत्पादन देls -la /root/.ssh/
mreithub

@mreithub त्वरित उत्तर के लिए धन्यवाद - ऊपर जोड़ा गया।
डैनी

3
निकालने का प्रयास करें _tm1अपनी मुख्य फ़ाइल नाम से (यानी mv id_rsa_tm1 id_rsaऔर mv id_rsa_tm1.pub id_rsa.pub)
mreithub

@mreithub यह काम किया! बहुत बहुत धन्यवाद, हालांकि मुझे समझ नहीं आता कि मैं फ़ाइल के नाम के लिए अन्य तार क्यों नहीं जोड़ सकता। मैं किसी भी मुद्दे के बिना सर्वर से कनेक्ट करने के लिए अपने iMac पर ऐसा करता हूं ... अर्थात मैं बिना किसी समस्या के id_rsa.tm1.imac.pub का उपयोग कर सकता हूं। क्या होगा अगर मैं कई चाबियाँ चाहता था?
डैनी

जवाबों:


22

अपने ssh मैन पेज पर एक नज़र डालें:

   -i identity_file
          Selects a file from which the identity (private key) for public
          key authentication is read.  The default is ~/.ssh/identity for
          protocol   version   1,   and  ~/.ssh/id_dsa,  ~/.ssh/id_ecdsa,
          ~/.ssh/id_ed25519 and ~/.ssh/id_rsa  for  protocol  version  2.
          Identity files may also be specified on a per-host basis in the
          configuration file.  It is possible to have multiple -i options
          (and  multiple  identities  specified  in configuration files).

या ssh_config मैन पेज:

   IdentityFile
          Specifies a file from which the user's DSA, ECDSA,  ED25519  or
          RSA   authentication   identity   is   read.   The  default  is
          ~/.ssh/identity for  protocol  version  1,  and  ~/.ssh/id_dsa,
          ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for proto‐
          col version 2.  Additionally, any identities represented by the
          authentication  agent  will  be  used for authentication unless
          IdentitiesOnly is set.

आप देखते हैं, कुछ विशेष फ़ाइल नाम हैं जिन्हें यदि आप एक कुंजी निर्दिष्ट नहीं करते हैं तो कोशिश की जाती है। वे फाइलें भी हैं जो आप अपने लॉग आउटपुट में देखते हैं।

फ़ाइल में एक कुंजी का उपयोग करने के लिए अलग-अलग नाम आपके पास तीन विकल्प हैं:

  • उपरोक्त का उपयोग करके स्पष्ट रूप से फ़ाइल निर्दिष्ट करें -i विकल्प ।
  • उपरोक्त का उपयोग करके फ़ाइल को अपने क्लाइंट कॉन्फिगर में कॉन्फ़िगर करें IdentityFile विकल्प ।
  • अपने एजेंट का उपयोग करके कुंजी जोड़ें ssh-add

इंटरेक्टिव सत्रों के लिए एजेंट सबसे अधिक लचीला होता है। आपके क्रॉन जॉब के लिए -iविकल्प शायद सबसे आसान है।


26

गंतव्य होस्ट पर एक विकृत अधिकृत_की फ़ाइल एक और कारण है, जो "हम एक पैकेट नहीं भेजते हैं" संदेश का उत्पादन करते हैं और प्यूवी के अधिकार का उपयोग करने के बजाय पासवर्ड मांगते हैं: -

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug2: we did not send a packet, disable method

इस विशेष मामले में समस्या यह थी कि सार्वजनिक कुंजी डेटा, जिसे .ssh/authorized_keysगंतव्य होस्ट में चिपकाया गया था, उसका पहला चरित्र गायब था: -

sh-rsa AAAA...

समाधान केवल लापता "एस" को जोड़ने के लिए था।

ssh-rsa AAAA...

इसलिए:-

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
...
debug1: Authentication succeeded (publickey).

2
धन्यवाद, हर बार मुझे यह त्रुटि मिलती है क्योंकि दूरस्थ होस्ट (सर्वर) पर मेरी अधिकृत_की फाइल विकृत है। काश, यह त्रुटि नहीं होती जैसा कि ग्राहक के साथ कोई समस्या थी।
इमली १४ ’

3
पहले 'मैं' को दबाए बिना व्यर्थ में चिपकाना!
जॉर्डन डेविडसन

मेरे लिए यह विकृत नहीं लगता था, लेकिन मैंने फ़ाइल को हटा दिया और स्रोत मशीन से मैंने इसे पुनः बनाने के लिए ssh-copy-id फिर से किया। समस्या सुलझ गयी।
अल्वारेज़

14

प्रश्न में त्रुटि संदेशों की यह सटीक स्ट्रिंग स्थानीय पक्ष पर एक मिस-मैचेड निजी / सार्वजनिक कुंजी जोड़ी के मामले में भी हो सकती है । नहीं, इससे कोई मतलब नहीं है लेकिन मैं अभी लंबे समय से यह जानने की कोशिश कर रहा था कि क्या हो रहा है।

  • रिमोट सिस्टम A में .ssh/mykey.pubकॉपी किया गया है .ssh/authorized_keys
  • स्थानीय सिस्टम B में .ssh/mykeyसिस्टम A की सार्वजनिक कुंजी से मिलान करने के लिए सही निजी कुंजी है, लेकिन एक .ssh/mykey.pubफ़ाइल भी है जो एक मिस-मैच है, संभवतः एक प्रतिस्थापित कुंजी का पिछला संस्करण है।

B से A तक का SSH ( ssh -i mykey A) प्रश्न में संदेशों के साथ विफल हो जाएगा, विशेष रूप से यदि आप -vvssh क्लाइंट से चालू करते हैं, तो आप निम्नलिखित हैं:

निजी कुंजी आज़माना: .sh / mykey
हमने एक पैकेट नहीं भेजा, अक्षम विधि

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


वाह! इसने मेरे लिए भी काफी समय मारा! कुछ बाल खो गए! तो मेरे मामले में यह भी था, केवल मेरी पब कुंजी वास्तव में क्लाइंट साइड अधिकृत_की फ़ाइल में थी, सिवाय इसके कि अंत में एक नाम @ होस्ट प्रविष्टि शामिल थी, जहां मेरे sshd होस्ट ने नहीं किया था। मुझे महसूस नहीं हुआ कि आपको प्रत्येक छोर पर अधिकृत_कीप्स से मिलान करने की आवश्यकता है, वास्तव में, मुझे नहीं लगता कि मैंने पहले कभी उनसे मिलान किया है। यह केवल एक समस्या थी जब मेरा ग्राहक CentOS 7 था, जो उबंटू 12.04 से जुड़ रहा था। MacOS, या अन्य उबंटू सिस्टम से जाना ठीक काम करता है।
gregthegeek

तो आप इस समस्या को कैसे ठीक करते हैं? आपने मेरी समस्या को एक टी के लिए वर्णित किया है। मेरी समस्या को और अधिक बढ़ा दिया गया है क्योंकि मैं कई प्रणालियों के बीच छलांग लगा रहा हूं। वास्तव में फ़ाइल निर्दिष्ट करना मेरे लिए काम नहीं कर रहा है
मदिवाड

@ माडिवड आप स्थानीय / निजी कुंजी (या सार्वजनिक रूप से कोई सार्वजनिक कुंजी) से मेल खाते हुए समस्या को ठीक नहीं करते हैं।
कालेब

@ कालेब की तुलना में यह अधिक सरल लगता है, जब तक (और मुझे लगता है कि पैसा नहीं गिरा है) इसका मतलब है कि मुझे सार्वजनिक और निजी दोनों तरह की चाबियों को प्रत्येक सिस्टम में कॉपी करना चाहिए जो मैं एसएसएच क्लाइंट के रूप में उपयोग करना चाहता हूं? मैंने एक IdentityFile बनाने की कोशिश की है, लेकिन मैं स्पष्ट रूप से इसका गलत उपयोग कर रहा हूं
Madivad

क्लाइंट पर अनाथ id_rsa.pub फ़ाइल को हटाने से यह मेरे लिए हल हो गया। मैं अभी तक इस समस्या में फिर से भाग गया एक नया Centos 7 क्लाइंट पर Ubuntu 12.04 सर्वर से कनेक्ट। अधिकृत_की नाम @ होस्ट समस्या इसे ठीक नहीं कर रही थी। मैंने निर्देशिकाओं, परमिटों, उसी id_rsa कुंजी फ़ाइल का मिलान किया, लेकिन एक अतिरिक्त id_rsa.pub (क्लाइंट की तरफ) थी। हटा दिया, अब यह काम करता है। मैंने ssh-keygen को निर्देशिकाओं को त्वरित बनाने के लिए चलाया था, फिर ज्ञात प्रणाली से rsync। लेकिन उस अतिरिक्त पब फ़ाइल को किसी भी निजी कुंजी से मेल नहीं खाता है (यह स्रोत rsync पर नहीं था)। मैंने सत्यापित करने के लिए बेजोड़ पब फ़ाइल को फिर से जोड़ा। मिलान सुनिश्चित करें या निकालें।
gregthegeek

5

डिफ़ॉल्ट फ़ाइल नाम ssh खोज रहे हैं id_rsaऔरid_rsa.pub

यदि आप अन्य फ़ाइल नामों का उपयोग करना चाहते हैं, तो आपको या तो उन्हें ssh_config( IdentityFileसेटिंग का उपयोग करके) या ssh कमांड लाइन पैरामीटर के माध्यम से निर्दिष्ट करना होगा -i


4

रेडहैट पर मेरा भी यही मुद्दा था; लॉग की जाँच की और पाया कि होम निर्देशिका में गलत उपयोगकर्ता अधिकार थे।

sshd[2507]: Authentication refused: bad ownership or modes for directory /home/user

फिक्सिंग होम डायर अधिकारों ने इसे हल किया।


4
U + L स्टैक एक्सचेंज साइट पर आपका स्वागत है। सही अनुमतियाँ कैसी दिखनी चाहिए, इसका उदाहरण देकर आप दूसरों को अपना उत्तर और अधिक उपयोगी बना सकते हैं।
एराथिएल

मेरे पास ~/.sshडायर को छोड़कर एक बहुत ही समान मुद्दा था । कम से कम फेडोरा 28 पर जब ~/.sshअनुमति 0775 थी, मैं सार्वजनिक / निजी कुंजी के साथ नहीं जुड़ सका। इसलिए मैंने अनुमति को 0755 में बदल दिया और एक आकर्षण की तरह काम किया :)
PovilasB

3

डेबियन / उबंटू में डिबग करने का एक सरल तरीका है: पासवर्ड से कनेक्ट करें और लॉग को पूंछें

tail -f /var/log/auth.log

दूसरे टर्मिनल से कनेक्ट करने का प्रयास करें और आपको त्रुटि दिखाई देगी ...

मेरे मामले में / रूट निर्देशिका 770 थी और 700 नहीं थी जो कि डिफ़ॉल्ट है। त्रुटि थी "प्रमाणीकरण ने इनकार कर दिया: निर्देशिका या रूट के लिए खराब स्वामित्व या मोड"

इसे ठीक करें और आप कर रहे हैं।


तुम इतना, आदमी! आपने मेरा दिन बचाया!
एंथनी

जिसने इसे स्पष्ट करने में मदद की। मेरा कह रहा था कि उपयोगकर्ता suchandsuch 123.123.123.123 से अनुमति नहीं है क्योंकि AllowUsers में सूचीबद्ध नहीं है । आपको बहुत - बहुत धन्यवाद!
एक्सेल


0

चलने के बाद

ssh-copy-id user@remote-host

आम तौर पर यह काम करना चाहिए। लेकिन अगर यह विफल हो जाता है, तो यह कोशिश करें: दूरस्थ होस्ट में लॉगिन करें क्योंकि आप जिस उपयोगकर्ता को भविष्य में लॉग इन करना चाहते हैं, उसे चलाएं:

ssh-keygen

इसने मेरी मदद की।


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

-2

ग्राहक:

vim /etc/ssh/ssh_config

#add your key 
IdentityFile ~/.ssh/yourkey

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