सवाल मुझे स्थानीय उबंटू से अमेज़ॅन ईसी 2 सर्वर में एसएसएच की कोशिश करते समय "अनुमति अस्वीकार (प्रकाशन)" क्यों मिलती है?


मेरे पास अमेज़ॅन ईसी 2 इंस्टेंस पर क्लाउड में चल रहे एप्लिकेशन का एक उदाहरण है, और मुझे इसे अपने स्थानीय उबंटू से कनेक्ट करने की आवश्यकता है। यह स्थानीय उबंटू और लैपटॉप में से एक पर ठीक काम करता है। मुझे संदेश मिला "अनुमति अस्वीकार (प्रकाशन)" एसएसएच को अन्य स्थानीय उबंटू पर ईसी 2 तक पहुंचने का प्रयास करते समय। यह मेरे लिए बहुत अजीब है।

मैं अमेज़ॅन ईसी 2 पर सुरक्षा सेटिंग्स के साथ कुछ प्रकार की समस्याएं सोच रहा हूं जिसमें एक आईपीएस तक पहुंच सीमित है या प्रमाण पत्र को पुन: उत्पन्न करने की आवश्यकता हो सकती है।

क्या किसी को समाधान पता है?


213
2017-07-13 07:38


मूल


"यह पहले काम करता था" - पहले क्या? - womble♦
मेरे पास एक लोचदार बीनस्टॉक ईसी 2 उदाहरण है। अगस्त-2013 में समाधान को उदाहरण के लिए पार करना था क्योंकि ec2-user उपयोगकर्ता ने अनुमति अस्वीकार कर दी (publicKey) त्रुटि दूर हो गई। जैसे: ssh -i ./mike-key-pairoregon.pem ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com। बेशक आपको इसके अनुसार अन्य सभी चीजें हैं stackoverflow.com/questions/4742478/... - mikemay
यदि आपके पास गलत उपयोगकर्ता नाम निर्दिष्ट है तो आपको यह समस्या मिलती है। Aws दस्तावेज़ (docs.aws.amazon.com/AWSEC2/latest/UserGuide/...) वर्तमान में उपयोगकर्ता नाम ec2-user [ssh -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com] के साथ एक उदाहरण दें, जबकि मेरा ( पुराना) ubuntu बॉक्स में उबंटू का उपयोगकर्ता नाम है, इसलिए जब मैंने उदाहरण का उपयोग किया तो मुझे यह त्रुटि मिली, सही उपयोगकर्ता नाम बदलने के लिए। - david.barkhuizen
@ डेविड.बर्कुइज़ेन, आपकी टिप्पणी ने मेरी मदद की। मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था; यह पता चला कि इसे उपयोगकर्ता नाम के साथ करना था। धन्यवाद। - NaijaProgrammer


जवाब:


इस स्थिति में करने वाली पहली चीज़ का उपयोग करना है -v विकल्प ssh, तो आप देख सकते हैं कि किस तरह के प्रमाणीकरण की कोशिश की जाती है और नतीजा क्या होता है। क्या इससे स्थिति को उजागर करने में मदद मिलती है?

अपने प्रश्न के आपके अपडेट में, आप "अन्य स्थानीय उबंटू पर" उल्लेख करते हैं। क्या आपने दूसरी मशीन पर एसएसएच निजी कुंजी पर प्रतिलिपि बनाई है?


140
2017-07-13 07:44



मैंने अन्य मशीन पर एसएसएच निजी कुंजी की प्रतिलिपि बनाई है जैसे @ ग्रेग ने सुझाव दिया है। यह अब काम करता है। धन्यवाद! - Vorleak Chy
एफवाईआई आप उन्हें इंस्टॉल किए बिना चाबियों के पथ को इंगित करने के लिए -i ध्वज का उपयोग कर सकते हैं - Jorge Vargas
मेरे मामले में, मैं एक bitnami .ami का उपयोग कर रहा था और मुझे एहसास नहीं हुआ कि आपको बिटमैनी नामक उपयोगकर्ता के रूप में लॉग इन करने की आवश्यकता है, जैसे: ssh -i <keyfile> bitname@<ec2-address>। दुर्भाग्य से -v विकल्प ने मुझे यह खोजने में मदद नहीं की, लेकिन यह जांचना अभी भी बहुत उपयोगी है! - Matt Connolly
ठीक है, मेरे मामले में मैं गलत उपयोगकर्ता नाम का उपयोग कर रहा था। "बिट्टनाम" के बजाय "उबंटू" का उपयोग कर रहा था। इस तरह: ssh -i key.pem bitnami @ hostaddress - Lucas Pottersky
एक अच्छा सीसा भी रिमोट नोड खुद ही है, देखो /var/log/auth.log, कभी-कभी आप निम्न संदेश देखेंगे: Authentication refused: bad ownership or modes for file /var/lib/jenkins/.ssh/authorized_keys या कुछ और - Jonas Libbrecht


चूंकि इसका स्पष्ट रूप से उल्लेख नहीं किया गया है, इसलिए एसएसडीडी डिफ़ॉल्ट रूप से अनुमतियों पर बहुत सख्त है authorized_keys फ़ाइलें। तो अगर authorized_keys है लिखने योग्य उपयोगकर्ता के अलावा किसी और के लिए लिखने योग्य बनाया जा सकता है उपयोगकर्ता के अलावा किसी अन्य व्यक्ति द्वारा, यह प्रमाणित करने से इंकार कर देगा (जब तक sshd को कॉन्फ़िगर नहीं किया जाता है StrictModes no)

मेरा मतलब है "लिखने योग्य" किया जा सकता है कि यदि किसी भी मूल निर्देशिका उपयोगकर्ता के अलावा किसी अन्य के लिए लिखने योग्य है, तो उन निर्देशिकाओं को संशोधित करने की अनुमति देने वाले उपयोगकर्ताओं को अनुमतियों को संशोधित करना प्रारंभ कर सकता है ताकि वे अधिकृत_की को संशोधित / प्रतिस्थापित कर सकें।

यह साथ नहीं दिखाया जाएगा ssh -v, यह sshd द्वारा उत्सर्जित लॉग में दिखाई देगा (आमतौर पर डाल दिया जाता है /var/log/secure या /var/log/auth.log, distro पर निर्भर करता है और syslogd विन्यास)।

आदमी एसएसडीडी (8) से:

 ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described above.  The
         content of the file is not highly sensitive, but the recommended
         permissions are read/write for the user, and not accessible by
         others.

         If this file, the ~/.ssh directory, or the user's home directory
         are writable by other users, then the file could be modified or
         replaced by unauthorized users.  In this case, sshd will not
         allow it to be used unless the StrictModes option has been set to
         “no”.

73
2018-01-05 14:38



वह "लिखने योग्य बनाया जा सकता है" बिट मुझे क्या मिला है - wmarbut
FWIW कुंजी फ़ाइलों के लिए सही अनुमतियां 600 हैं (देखें यहाँ) - Matt Lyons
हां, मेरी .authorized_keys फ़ाइल समूह द्वारा लिखने योग्य थी इसलिए इसे स्वीकार करने से इनकार कर दिया। - Aditya M P
मैं दीवार के खिलाफ अपना सिर मार रहा था! मेरे उपयोगकर्ता फ़ोल्डर में गलत अनुमतियां थीं। धन्यवाद! - XJones
वही / / एसएसएच फ़ोल्डर के लिए ही जाता है। आपको निम्न त्रुटि संदेश मिल सकता है: Authentication refused: bad ownership or modes for directory - Yevgeniy M.


मुझे यह त्रुटि मिली, क्योंकि मैं जोड़ना भूल गया था -l विकल्प। मेरा स्थानीय उपयोगकर्ता नाम रिमोट सिस्टम पर समान नहीं था।

यह आपके प्रश्न का उत्तर नहीं देता है, लेकिन मैं यहां अपनी समस्या का उत्तर ढूंढ रहा हूं।


37
2018-04-01 21:51



ssh host -l user के समान है ssh user@host, सही? - Znarkus
@Znarkus हाँ, यह वही है। - cregox
हां, इसने मेरी समस्या को हल किया जिससे "अनुमति अस्वीकार (publickey)" त्रुटि भी हुई। - Brooks Moses
यह मेरे लिए समस्या थी। मैं उपयोगकर्ता को "रूट" काम करने की उम्मीद कर रहा था, लेकिन मैं उबंटू ईसी 2 छवि का उपयोग कर रहा था जिसमें डिफ़ॉल्ट उपयोगकर्ता "उबंटू" था। - Cerin


मुझे यह संदेश उबंटू एएमआई के आधार पर एक नए उदाहरण पर मिला। मैं पीईएम प्रदान करने के लिए -i विकल्प का उपयोग कर रहा था लेकिन यह अभी भी "अनुमति अस्वीकार (publickey)" दिखा रहा था।

मेरी समस्या यह थी कि मैं सही उपयोगकर्ता का उपयोग नहीं कर रहा था। Ubuntu @ ec2 के साथ एसएसएच चलाकर ... यह सामान्य की तरह काम करता है।


19
2017-11-17 16:29



हाँ ... मैं कमांड चला रहा था sudo, यही कारण है कि यह काम नहीं कर रहा था। - thaddeusmt


कुछ ऐसा जो पढ़ने के लिए आसान है ssh -i (निश्चित रूप से मेरी राय में), है tail -f /var/log/auth.log। कनेक्ट करने का प्रयास करते समय, उस सर्वर पर चलाना चाहिए जिसे आप कनेक्ट करने का प्रयास कर रहे हैं। यह सादे पाठ में त्रुटियों को दिखाएगा।

इससे मुझे मेरी समस्या हल करने में मदद मिली:

Xx.yy.com से उपयोगकर्ता [उपयोगकर्ता नाम] की अनुमति नहीं है क्योंकि उपयोगकर्ता समूह में से कोई भी समूह समूह समूह में सूचीबद्ध नहीं है


16
2018-02-01 14:07



मुझे लगता है तुम्हारा मतलब है -v - Tim Tisdall
यह सर्वर लॉग है। आरएचईएल / सेंटोस 7 के लिए: tail -f /var/log/secure - Gianfranco P.


अपनी जाँच / Etc / ssh / sshd_config फ़ाइल। वहां, जो रेखा कहती है उसे ढूंढें

PasswordAuthentication no

उस लाइन को हां के बजाए हाँ कहने के लिए संशोधित करने की आवश्यकता है। इसके अलावा, बाद में एसएसडीडी सर्वर को पुनरारंभ करें।

sudo /etc/init.d/ssh restart

11
2017-12-10 06:15



इससे सर्वर कम सुरक्षित हो जाएगा। - Znarkus
यह मेरी समस्या थी: मैं किसी अन्य उपयोगकर्ता के लिए खाता खोलना चाहता था, केवल एक पासवर्ड के साथ प्रमाणित करना। मैं उन स्थानों से खुद को लॉग इन करने में सक्षम होना चाहता था जहां मेरे पास मेरी निजी कुंजी नहीं थी। - Daniel
हम कैसे जा सकते हैं /etc/ssh/sshd_config - अगर हम सर्वर में भी नहीं पहुंच सकते हैं? - kyo
सर्वर में स्वयं पहुंचने के लिए, आपको उस पीईएम फ़ाइल का उपयोग करना होगा जिसे आपने उदाहरण बनाया था। निर्देश उसके बाद जाते हैं। - Sudipta Chatterjee
यह मेरे लिए काम करता था, हालांकि sshd को पुनरारंभ करने के लिए निम्न आदेश की आवश्यकता होती है: sudo service sshd reload - pacoverflow


शायद वर्तमान पोस्टर के लिए प्रासंगिक नहीं है, लेकिन ऐसी स्थितियों के उत्तर की खोज करते समय इसे ढूंढने वाले अन्य लोगों की सहायता कर सकते हैं। अमेज़ॅन को एसएसएच कीपैयर उत्पन्न करने की बजाय, मैं अमेज़ॅन को अपनी खुद की, मानक, डिफ़ॉल्ट सार्वजनिक एसएस कुंजी अपलोड करने की सलाह देता हूं और यह निर्दिष्ट करता हूं कि जब आप ईसी 2 इंस्टेंस चलाते हैं।

यह आपको ssh में "-i" प्रकार वाक्यविन्यास ड्रॉप करने देता है, मानक विकल्पों के साथ rsync का उपयोग करता है, और आपको सभी ईसी 2 क्षेत्रों में एक ही एसएस कुंजी का उपयोग करने देता है।

मैंने यहां इस प्रक्रिया के बारे में एक लेख लिखा है:

अमेज़ॅन ईसी 2 को व्यक्तिगत एसएसएच कुंजी अपलोड करना
http://alestic.com/2010/10/ec2-ssh-keys


6
2017-09-29 21:15



+1 इस कारण से इस सवाल को ठीक से देखा। - John Riselvato
मैं आपके आलेख का पालन करने में यह त्रुटि देखता हूं। क्षेत्र = $ (ec2-description-regions | cut -f2) आवश्यक विकल्प '-के, - निजी कुंजी कुंजी' गायब (-एच उपयोग के लिए) - KashifAli
@ कशिफएली आप ईसी 2 एपीआई कमांड लाइन टूल क्रेडेंशियल सेट अप करना चाहते हैं ताकि आपको हमेशा प्रत्येक कमांड लाइन पर क्रेडेंशियल्स पास नहीं करना पड़े। - Eric Hammond


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


5
2017-08-08 21:00



धन्यवाद! यह वास्तव में मेरी समस्या थी। जब आप किसी इंस्टेंस को पुनरारंभ करते हैं तो मुझे पता नहीं चला कि DNS नाम बदल गया है। - Tim Swast
मेरे मामले में, * .compute.amazonaws.com यूआरएल बदल गया जब मैंने एक लोचदार आईपी सौंपा। - Geoffrey Booth


यदि आप CentOS 5 का उपयोग कर रहे हैं, तो आप सेट करना चाहेंगे StrictModes no में /etc/ssh/sshd_config। मैं एनआईएस / एनएफएस का उपयोग करके / होम निर्देशिका साझा कर रहा हूं, और मैंने सभी अनुमतियों को सही ढंग से सेट किया है, लेकिन यह हमेशा मुझे पासवर्ड से संकेत देता है। सेट करने के बाद StrictModes no, समस्या गायब हो गई!


2
2017-07-10 04:58





ग्रेग का जवाब बताता है कि इसे बेहतर तरीके से शूट करने में कैसे समस्या है, हालांकि वास्तविक मुद्दा यह है कि आपके पास लेनदेन (क्लाइंट) के एक तरफ एक एसएसएच कुंजी सेट है, जो पासवर्ड आधारित प्रमाणीकरण के बजाय सार्वजनिक कुंजी प्रमाणीकरण का प्रयास कर रहा है। चूंकि आपके पास ईसी 2 उदाहरण पर संबंधित सार्वजनिक कुंजी नहीं है, यह काम नहीं करेगा।


1
2017-07-13 08:11



आप इस मुद्दे को कैसे हल करें? - Julien Grenier