सवाल * उपयोगकर्ता नाम * के लिए बहुत अधिक प्रमाणीकरण विफलताओं *


मेरे पास एसएसएच एक्सेस सक्षम के साथ एक होस्टगेटर खाता है और इस आदेश के साथ जेनरेट की गई .pub कुंजी फ़ाइल अपलोड करने का प्रयास करते समय:

rsync -av -e "ssh -p2222" /home/user/.ssh/key.pub उपयोगकर्ता नाम @111.222.33.44: .ssh / अधिकृत_keys

मैं मिल रहा हूँ:

111.222.33.44: 2 से डिस्कनेक्ट प्राप्त हुआ: उपयोगकर्ता नाम के लिए बहुत अधिक प्रमाणीकरण विफलताओं
rsync: कनेक्शन अप्रत्याशित रूप से बंद (अब तक 0 बाइट प्राप्त हुए) [प्रेषक]
rsync त्रुटि: io.c (601) पर अज्ञात त्रुटि (कोड 255) [प्रेषक = 3.0.7]

जब तक मुझे ऑथ विफलता नहीं मिली तब तक मैं एसएसएच के साथ पहले चारों ओर झुका रहा था। लेकिन अब ऐसा लगता है कि ऑथ विफलता काउंटर रीसेट नहीं होता है (अब 12 घंटे से अधिक इंतजार कर रहा है, तकनीकी समर्थन "मान लीजिए" यह 30 मिनट से 1 घंटे के बाद रीसेट करता है, और एक और लड़के ने मुझे बताया "हर बार जब आप लॉगिन करने का प्रयास करते हैं तो यह रीसेट हो जाता है उपयोगकर्ता नाम ", जीश)।

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


231
2017-09-12 17:14


मूल




जवाब:


यह आमतौर पर है अनजाने में कई एसएसएच कुंजी की पेशकश के कारण सर्वर के लिए। बहुत सारी चाबियों की पेशकश के बाद सर्वर किसी भी कुंजी को अस्वीकार कर देगा।

आप इसे जोड़कर अपने लिए यह देख सकते हैं -v अपने लिए झंडा ssh वर्बोज आउटपुट प्राप्त करने के लिए आदेश। आप देखेंगे कि जब तक सर्वर कनेक्शन को अस्वीकार नहीं करता तब तक चाबियों का एक गुच्छा पेश किया जाता है: "[उपयोगकर्ता] के लिए बहुत सारी प्रमाणीकरण विफलताओं"। वर्बोज़ मोड के बिना, आपको केवल संदिग्ध संदेश दिखाई देगा "हमउम्र द्वारा पुनःस्थापित संबंध"

अप्रासंगिक कुंजी को पेश किए जाने से रोकने के लिए, आपको इसे प्रत्येक होस्ट एंट्री में स्पष्ट रूप से निर्दिष्ट करना होगा ~/.ssh/config (क्लाइंट मशीन पर) जोड़कर फ़ाइल IdentitiesOnly इस तरह:

Host www.somehost.com
  IdentityFile ~/.ssh/key_for_somehost_rsa
  IdentitiesOnly yes
  Port 22

यदि आप एसएसएच-एजेंट का उपयोग करते हैं, तो यह चलाने में मदद करता है ssh-add -D पहचान को साफ़ करने के लिए।

यदि आप किसी भी एसएसएच होस्ट कॉन्फ़िगरेशन का उपयोग नहीं कर रहे हैं, तो आपको स्पष्ट रूप से सही कुंजी निर्दिष्ट करना होगा ssh ऐसा आदेश:

ssh -i some_id_rsa -o 'IdentitiesOnly yes' them@there:/path/

नोट: उद्धरणों के बीच होने वाली 'पहचान केवल हां' पैरामीटर आवश्यक है।

या

ssh -i some_id_rsa -o IdentitiesOnly=yes them@there:/path/

374
2017-09-12 17:53



यह मुझे स्पष्ट नहीं है कि इस लाइन को कहां रखा जाए। जिस सर्वर पर मैं लॉग इन करने का प्रयास कर रहा हूं, .ssh / config में केवल अन्य सर्वरों के लिए जानकारी है। क्या आपका मतलब है कि यह कंप्यूटर पर .ssh / config फ़ाइल में जाना चाहिए, मैं एसएसएच से कोशिश कर रहा हूं? यदि ऐसा है, तो यह अस्पष्ट है क्योंकि आपका जवाब कहता है "एक बार जब आप लॉग इन हो जाते हैं ..." - David LeBauer
मुझे विकल्प को डबल कोट्स में रखना होगा, इस तरह: ssh -i some_id_rsa -o "IdentitiesOnly yes" them@there:/path/ - knb
WindowsNT (Putty Agent) चला रहे विंडोज उपयोगकर्ता, यह सुनिश्चित करने के लिए जांचें कि आपके पास केवल चाबियाँ हैं जिन्हें आपको लोड करने की आवश्यकता है। गलती से मेरी सभी निजी कुंजी लोड करने के बाद मैं इस मुद्दे में भाग गया। - Chris Rasco
हालांकि, के लिए sshfs (फ्यूज) मुझे एक अनिवार्य बराबर चिह्न के साथ विकल्प लिखना है, इस तरह: sshfs -o "IdentitiesOnly=yes" -o IdentityFile=~/.ssh/id_dsa them@there/var/tmp /mnt/tmp  (उबंटू 13.10) - knb
इसका उद्धरण के बिना इस्तेमाल किया जा सकता है, इस तरह: -o IdentitiesOnly=yes - Valentin Kantor


मुझे ऐसा करने का एक आसान तरीका मिला (यदि पासवर्ड प्रमाणीकरण का उपयोग कर रहा है):

ssh -o PubkeyAuthentication=no username@hostname.com

यह गैर-कुंजी प्रमाणीकरण को मजबूर करता है। मैं तुरंत लॉगऑन करने में सक्षम था।

संदर्भ


163
2018-03-25 00:14



+1, इच्छा है कि मैं आपको और दे सकता हूं। रास्पबेरी पीआई एकमात्र डिवाइस है जिसे मैं सार्वजनिक कुंजी के बिना एसएसएच करता हूं। मिल रहा था: "पीआई के लिए बहुत सारी प्रमाणीकरण विफलताओं" - blak3r
और इसका उपयोग करने के लिए rsync: rsync -av -e 'ssh -o PubkeyAuthentication=no' 'user@host.com:~/remote_file' 'local_file' - Ciro Santilli 新疆改造中心 六四事件 法轮功
आप पासवर्ड ऑथ के लिए इसे और भी तेज बनाने के लिए उपनाम भी बना सकते हैं। ऊर्फ sshp = 'ssh -o Pubkey प्रमाणीकरण = नहीं' - dhempler


मुझे यह त्रुटि भी मिल रही थी और पाया कि यह बी / सी हो रहा था सर्वर को 6 प्रयासों को स्वीकार करने के लिए कॉन्फ़िगर किया गया था:

/etc/ssh/sshd_config
...
...
#MaxAuthTries 6

सेटिंग के अलावा IdentitiesOnly yes आपके में ~/.ssh/config फ़ाइल में आपके पास कुछ अन्य विकल्प हैं।

  1. बढ़ाओ MaxAuthTries (एसएसएच सर्वर पर)
  2. आपके द्वारा मौजूद कुछ प्रमुख जोड़े को हटाएं ~/.ssh/ निर्देशिका और रन ssh-add -D 
  3. स्पष्ट रूप से किसी दिए गए होस्ट को एक कुंजी लिंक करें ~/.ssh/config फ़ाइल

इस तरह:

host foo
hostname foo.example.com
IdentityFile /home/YOU/.ssh/foo
  1. शायद इसके बारे में जाने का कोई अच्छा तरीका नहीं है, क्योंकि यह आपके एसएसएच सर्वर को थोड़ा कमजोर करता है क्योंकि अब यह किसी दिए गए कनेक्शन प्रयास में और चाबियाँ स्वीकार करेगा। यहां ब्रूट फोर्स अटैक वेक्टर सोचें।

  2. यह मानने का एक अच्छा तरीका है कि आपके पास ऐसी कुंजी हैं जिनकी आवश्यकता नहीं है और उन्हें स्थायी रूप से हटाया जा सकता है।

  3. और पहचान स्थापित करने का दृष्टिकोण केवल इस मुद्दे से निपटने के पसंदीदा तरीके हैं!


24
2018-06-09 04:56



आपकी आखिरी पंक्ति में आपके पास identfile /home/YOU/.ssh/foo है लेकिन यह पहचान फ़ाइल होना चाहिए (एक टी नहीं है) - Nin
@ निन - धन्यवाद, तय। - slm


मैंने ~ / .ssh / config में यह जोड़ा:

Host *
IdentitiesOnly yes

यह डिफ़ॉल्ट रूप से विकल्प पहचान केवल = हाँ सक्षम बनाता है। अगर आपको निजी कुंजी से कनेक्ट करने की आवश्यकता होगी, तो आपको इसे विकल्प -i के साथ निर्दिष्ट करना चाहिए


6
2017-07-23 17:29





यदि आपके पास पासवर्ड है, और लॉगिन करने के लिए बस पासवर्ड का उपयोग करना चाहते हैं, तो यह है कि आप इसे कैसे करते हैं।

केवल पासवर्ड प्रमाणीकरण का उपयोग करने के लिए और सार्वजनिक कुंजी का उपयोग न करें, और कुछ हद तक भ्रामक "कीबोर्ड-इंटरैक्टिव" (जो पासवर्ड सहित एक सुपरसेट है) का उपयोग न करें, आप इसे कमांड लाइन से कर सकते हैं:

ssh -o PreferredAuthentications=password user@example.com

6
2018-06-19 14:22





यदि आपको निम्न एसएसएच त्रुटि मिलती है:

$ Received disconnect from host: 2: Too many authentication failures for root

यह तब हो सकता है जब आपके पास (। My system पर डिफ़ॉल्ट) आपकी .ssh निर्देशिका में संग्रहीत पांच या अधिक डीएसए / आरएसए पहचान फ़ाइलें और यदि '-i' विकल्प कमांड लाइन पर निर्दिष्ट नहीं है।

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

यदि आपके पास .ssh निर्देशिका में कई निजी कुंजी हैं तो आप '-o' वैकल्पिक तर्क का उपयोग करके कमांड लाइन पर "सार्वजनिक कुंजी प्रमाणीकरण" अक्षम कर सकते हैं।

उदाहरण के लिए:

$ ssh -o PubkeyAuthentication=no root@host

5
2017-09-20 21:44



यह वही था जो मेरे साथ हो रहा था! स्पष्टीकरण के लिए बहुत बहुत धन्यवाद;) - El Ninja Trepador


@ डेविड कह रहे हैं, बस इसे जोड़ें IdentitiesOnly yes आपके .ssh / config में, यह वही काम करता है ssh -o PubkeyAuthentication=no.

लॉग इन करने के बाद, हटाएं .ssh/authorized_keys। अब, स्थानीय मशीन पर वापस जाएं और निम्न टाइप करें

cat ~/.ssh/id_rsa.pub | ssh -o PubkeyAuthentication=no user@IP_ADDR 'cat >> .ssh/authorized_keys'। इसे सार्वजनिक कुंजी के साथ अपने एसएसएच को फिर से सक्षम करना चाहिए


2
2018-01-25 05:48





मुझे पता है कि यह एक पुराना धागा है, लेकिन मैं बस यहां जोड़ना चाहता था कि मैं एक ही त्रुटि संदेश में भाग गया, लेकिन यह कुंजी का उपयोग कर रहे उपयोगकर्ता के बजाय .ssh फ़ोल्डर रूट के मालिक के कारण हुआ था। मैंने निम्न आदेशों को चलाकर समस्या को सही किया:

sudo chown -R user:user /home/user/.ssh

मैंने यह भी सुनिश्चित किया कि .ssh फ़ोल्डर पर अनुमतियां सही थीं:

sudo chmod 700 /home/user/.ssh

.Ssh निर्देशिका में फ़ाइलों को 600 की अनुमति होनी चाहिए:

sudo chmod 600 /home/user/.ssh/authorized_keys

2
2018-06-13 17:37



मैं बिना किसी चेतावनी के इसका उपयोग करने से सावधान रहूंगा। एसएसएच कुंजी अनुमतियां आमतौर पर कुछ चाबियों, विशेष एडब्ल्यूएस के लिए 400 तक सीमित होती हैं। उन्हें ऊपर सेट करने का प्रयास करने के परिणामस्वरूप कुंजी स्वीकार नहीं की जाएगी, और यह आपको अपने एडब्ल्यूएस खाते से बाहर कर सकती है। - Michael Ryan Soileau