* ব্যবহারকারীর নাম * এর জন্য অনেক বেশি প্রমাণীকরণ ব্যর্থতা


255

Ssh অ্যাক্সেস সক্ষম সহ আমার একটি হোস্টগেটর অ্যাকাউন্ট রয়েছে। এই কমান্ডটি দিয়ে উত্পন্ন .pub কী ফাইলটি আপলোড করার চেষ্টা করার সময়:

rsync -av -e "ssh -p2222" /home/user/.ssh/key.pub username@111.222.33.44:.ssh/authorized_keys

আমি পেতে থাকি:

111.222.33.44: 2 থেকে সংযোগ বিচ্ছিন্ন হয়েছে: ব্যবহারকারীর নামের জন্য অনেক বেশি প্রমাণীকরণ ব্যর্থতা
আরএসএনসিএন: সংযোগটি অপ্রত্যাশিতভাবে বন্ধ হয়ে গেছে (0 টি বাইট এখনও পর্যন্ত পাওয়া গেছে) [প্রেরক]
rsync ত্রুটি: io.c (601) এ অব্যক্ত ত্রুটি (কোড 255) [প্রেরক = 3.0.7]

আমি লেখার ব্যর্থতা না পাওয়া পর্যন্ত আমি আগে এসএসএস দিয়ে প্রায় বেঁচে ছিলাম। তবে এখন মনে হচ্ছে লেখকের ব্যর্থতা কাউন্টারটি পুনরায় সেট হয় না (এখন 12 ঘন্টারও বেশি অপেক্ষা করা হয়েছে, প্রযুক্তি সমর্থন "মনে করে" এটি 30 মিনিট থেকে 1 ঘন্টা পরে পুনরায় সেট করে এবং অন্য একজন লোক আমাকে বলেছিল "আপনি যখনই লগইন করার চেষ্টা করবেন তখন এটি পুনরায় সেট করে ব্যবহারকারীর নাম ", জীশ)।

এটা আমার মাথা খারাপ করে দিচ্ছে। এমনকি আমি এটি স্লাইসহোস্ট কাস্টম সার্ভারেও সেট আপ করেছি এবং এই লোকগুলির সাথে কম সমস্যা ছিল।

কোন টিপস? সম্ভবত এটি কোনও ক্লায়েন্টের পাশ এবং সার্ভার সাইড নয়।


আমার ক্ষেত্রে কী তৈরির ক্ষেত্রে ভুল হয়েছে। আমি একটি কী তৈরি করেছি এবং আমি কীটির শেষে উত্স ঠিকানা এবং ব্যবহারকারীর নাম উল্লেখ করতে মিস করেছি।
রিপোর্টার

উত্তর:


415

এটি অসাবধানতার সাথে সার্ভারে একাধিক ssh কী সরবরাহ করার কারণে ঘটে থাকে is অনেকগুলি কী সরবরাহ করার পরে সার্ভার কোনও চাবি প্রত্যাখ্যান করবে।

ভার্বোজ আউটপুট পেতে -vআপনার sshকমান্ডে পতাকা যুক্ত করে আপনি এটি নিজের জন্য দেখতে পাচ্ছেন । আপনি দেখতে পাবেন যে সার্ভার সংযোগটি প্রত্যাখ্যান না করা অবধি একগুচ্ছ কী অফার করা হয়: "[ব্যবহারকারীর] জন্য অনেক বেশি প্রমাণীকরণ ব্যর্থতা" । ভার্বোজ মোড ব্যতীত আপনি কেবল অস্পষ্ট বার্তাটি দেখতে পাবেন "পিয়ারের মাধ্যমে সংযোগটি পুনরায় সেট করুন"

অপ্রাসঙ্গিক কীগুলি সরবরাহ করা থেকে বিরত রাখতে, আপনাকে ~/.ssh/config(ক্লায়েন্ট মেশিনে) ফাইলের প্রতিটি হোস্ট এন্ট্রিতে এই জাতীয় সংযুক্তি স্পষ্ট করে উল্লেখ করতে হবে IdentitiesOnly:

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

আপনি যদি ssh-এজেন্ট ব্যবহার করেন তবে ssh-add -Dএটি সনাক্তকরণগুলি সাফ করতে চালাতে সহায়তা করে।

যদি আপনি কোনও ssh হোস্ট কনফিগারেশন ব্যবহার না করে থাকেন তবে আপনাকে স্পষ্টরূপে sshকমান্ডটিতে সঠিক কীটি নির্দিষ্ট করতে হবে :

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

দ্রষ্টব্য: 'পরিচয় কেবলমাত্র হ্যাঁ' প্যারামিটারের উদ্ধৃতিগুলির মধ্যে থাকা দরকার।

অথবা

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

5
এই লাইনটি কোথায় রাখবেন তা আমার কাছে পরিষ্কার নয়। যে সার্ভারে আমি লগ ইন করার চেষ্টা করছি সে ক্ষেত্রে .ssh / কনফিগারেশনে কেবলমাত্র অন্যান্য সার্ভারের জন্যই তথ্য রয়েছে। আপনি কী বোঝাতে চাইছেন যে আমি যে কম্পিউটার থেকে এসএসএস করার চেষ্টা করছি সেটিতে .ssh / config ফাইলটি থাকা উচিত? যদি তা হয় তবে এটি অস্পষ্ট কারণ আপনার উত্তরটি বলে "একবার আপনি আবার লগ ইন করেছেন ..."
ডেভিড লেবাউর

2
আমাকে বিকল্পটি ডাবল ssh -i some_id_rsa -o "IdentitiesOnly yes" them@there:/path/
উক্তিতে রেখে

1
উইন্ডোজ ব্যবহারকারীরা প্যাগেন্ট (পুট্টি এজেন্ট) চালাচ্ছেন, আপনার কেবল যে কীগুলি বোঝাই করা দরকার তা পরীক্ষা করে দেখুন। দুর্ঘটনাক্রমে আমার সমস্ত ব্যক্তিগত কীগুলি লোড করার পরে আমি এই সমস্যাটিতে চলে এসেছি।
ক্রিস রাসকো

2
প্রশ্নটি রয়ে গেছে: হোস্টের নিয়মের একটি সুস্পষ্ট সেটিংস থাকা সত্ত্বেও কেন ssh"একাধিক কী" অফার করে (কোনও কিছু এর অধীন ~/.ssh) IdentityFile /path/to/private_key_file। এই সুস্পষ্টভাবে নির্দিষ্ট কীটি (প্রথমে খুব কমপক্ষে) দেওয়া উচিত নয়? এটি কি ওপেনশায় ক্লায়েন্টের কোনও বাগ / অপব্যবহার নয়?
আরিফুল

2
তবে IdentityFileবিকল্পটির সাথে নির্দিষ্ট কীটি ব্যবহার করা উচিত নয় ? উদাহরণস্বরূপ, IdentitiesOnlyবিকল্প ব্যতীত, এটি চেষ্টা করার githubসময় আমার কীটি ব্যবহার করার চেষ্টা করে ssh gitlab.com। এটা আমার বুঝে আসেনা.
Iulian Onofrei

188

আমি এটি করার একটি সহজ উপায় খুঁজে পেয়েছি (যদি পাসওয়ার্ড প্রমাণীকরণ ব্যবহার করা হয়):

ssh -o PubkeyAuthentication=no username@hostname.com

এটি নন-কী প্রমাণীকরণকে বাধ্য করে। আমি সঙ্গে সঙ্গে লগইন করতে সক্ষম হয়েছি।

উল্লেখ


3
+1, আশা করি আমি আপনাকে আরও দিতে পারতাম। রাস্পবেরি পাই হ'ল একমাত্র ডিভাইস যা আমি পাবলিক কী ছাড়াই প্রবেশ করি।
পাচ্ছিল

1
এবং rsyncrsync -av -e 'ssh -o PubkeyAuthentication=no' 'user@host.com:~/remote_file' 'local_file'
এটির

1
পাসওয়ার্ড লেখার জন্য এটি আরও তাত্পর্যপূর্ণ করতে আপনি একটি এলিয়াস তৈরি করতে পারেন। ওরফে এসএসপি = 'এসএসএস -ও পাবকিআথেন্টিফিকেশন = না'
ধেম্পলার

26

আমিও এই ত্রুটিটি পেয়েছিলাম এবং দেখতে পেলাম যে এটি ঘটছে খ / সি সার্ভারটি 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. এবং পরিচয় স্থাপনের পদ্ধতির কেবলমাত্র এই সমস্যাটি মোকাবেলার পছন্দসই উপায়গুলি!


আপনার শেষ লাইনে আপনি / home/YOU/.ssh/foo সনাক্তকরণ করতে পারেন তবে এটি পরিচয় ফাইল হওয়া উচিত (একটি চ নয়)
Nin

7

আমি এটি ~ / .ssh / কনফিগার করে যুক্ত করেছি:

Host *
IdentitiesOnly yes

এটি ডিফল্টরূপে আইডেন্টিটিস কেবলমাত্র হ্যাঁ বিকল্পটি সক্ষম করে। আপনি যদি ব্যক্তিগত কী এর সাথে সংযোগ স্থাপন করতে চান তবে আপনার এটি বিকল্প -i দিয়ে উল্লেখ করতে হবে


6

আপনি যদি নিম্নলিখিত এসএসএইচ ত্রুটিটি পান:

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

আপনার .ssh ডিরেক্টরিতে পাঁচ বা ততোধিক ডিএসএ / আরএসএ পরিচয় ফাইল সংরক্ষণ করা থাকলে এবং '-i' বিকল্পটি কমান্ড লাইনে নির্দিষ্ট না করা থাকলে এটি ঘটতে পারে।

Ssh ক্লায়েন্ট প্রথমে প্রতিটি পরিচয় (ব্যক্তিগত কী) এবং পাসওয়ার্ড প্রমাণীকরণের জন্য পরবর্তী প্রম্পট ব্যবহার করে লগইন করার চেষ্টা করবে। তবে, পাঁচটি খারাপ লগইন চেষ্টার পরে sshd সংযোগটি ড্রপ করে (আবার ডিফল্ট ভিন্ন হতে পারে)।

আপনার .ssh ডিরেক্টরিতে বেশ কয়েকটি ব্যক্তিগত কী থাকলে আপনি '-o' alচ্ছিক যুক্তি ব্যবহার করে কমান্ড লাইনে "পাবলিক কী প্রমাণীকরণ" অক্ষম করতে পারেন।

উদাহরণ স্বরূপ:

$ ssh -o PubkeyAuthentication=no root@host

এটাই হচ্ছিল আমার সাথে! ব্যাখ্যার জন্য অনেক ধন্যবাদ;)
এল নিনজা ট্রেপাডোর

6

আপনার যদি পাসওয়ার্ড থাকে এবং লগইন করার জন্য পাসওয়ার্ডটি সহজেই ব্যবহার করতে চান তবে আপনি এটি কীভাবে করবেন তা এখানে।

কেবলমাত্র পাসওয়ার্ড প্রমাণীকরণ ব্যবহার করতে এবং পাবলিক-কী ব্যবহার না করা এবং কিছুটা বিভ্রান্তিকর "কীবোর্ড-ইন্টারেক্টিভ" (যা পাসওয়ার্ড সহ একটি সুপারসেট) ব্যবহার না করার জন্য, আপনি কমান্ড লাইন থেকে এটি করতে পারেন:

ssh -o PreferredAuthentications=password user@example.com

3

@ ডেভিড বলে চলে গেলেন, এটি IdentitiesOnly yes আপনার .ssh / কনফিগারেশনে যুক্ত করুন, এটি একই কাজ করেssh -o PubkeyAuthentication=no.

আপনি লগ ইন করার পরে, সরান .ssh/authorized_keys। এখন, স্থানীয় মেশিনে ফিরে যান এবং নিম্নলিখিত টাইপ করুন

cat ~/.ssh/id_rsa.pub | ssh -o PubkeyAuthentication=no user@IP_ADDR 'cat >> .ssh/authorized_keys'। এটি আপনার এসএসটিকে পাবলিক কী দিয়ে পুনরায় সক্ষম করতে হবে


2

আমি জানি এটি একটি পুরানো থ্রেড, তবে আমি এখানে এখানে যুক্ত করতে চেয়েছিলাম যে আমি একই ত্রুটি বার্তায় চলে এসেছি, তবে এটি .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

আমি একটি সতর্কতা ছাড়াই এটি ব্যবহার করে যত্নশীল হবে। এসএসএইচ কী অনুমতিগুলি সাধারণত কিছু কীগুলির জন্য 400 এ সীমাবদ্ধ থাকে, বিশেষ এডাব্লুএস। এগুলি উপরে সেট করার চেষ্টা করার ফলে কীটি গ্রহণ না করা হবে এবং এটি আপনাকে আপনার এডাব্লুএস অ্যাকাউন্ট থেকে লক আউট করতে পারে।
মাইকেল রায়ান সাইলিউ

1

আমার ক্ষেত্রে সমস্যাটি ছিল ডিরেক্টরি অনুমতিগুলির। এটি আমার জন্য এটি স্থির করে:

$ chmod 750 ~;chmod 700 ~/.ssh

0

আমার ক্ষেত্রে, এটি ঘটছিল কারণ আমি "উবুন্টু" ব্যবহারকারীর নামটি ব্যবহার করছি, তবে এই উদাহরণটির ব্যবহারকারীর নামটি ছিল "ইক 2-ব্যবহারকারী"

"জন টি" প্রস্তাবিত যা করার পরে আমি এই ত্রুটি পেয়েছি:

অনুমতি অস্বীকৃত (পাবলিককি)।

তারপরে আমি এই উত্তরটিতে সমাধানটি (যেমন ব্যবহারকারীর নামটি "বাস্তু-ব্যবহারকারী" তে পরিবর্তন করা) পেয়েছি: https://stackoverflow.com/questions/1454629/aws-ssh-access-permission-denied-publickey-issue


0

আমার কাছে আমার সর্বজনীন কী ছিল .ssh/authorized_keys2তবে সার্ভারটি কেবলমাত্র পড়ার জন্য কনফিগার করা হয়েছিল .ssh/authorized_keys:

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys

আমার ফাইলটিতে সরানোর পরে .ssh/authorized_keys, আমি আমার কী দিয়ে সফলভাবে লগ ইন করতে পারি।


0

অনেক বেশি প্রমাণীকরণ ব্যর্থতা

দূরবর্তী এসএসএইচ সার্ভারে অনুমোদিত সীমাবদ্ধতার পরে অনেক ব্যর্থ প্রমাণীকরণের প্রচেষ্টা থাকার কারণে এই বার্তাটি ঘটে is এর সম্ভাব্য অর্থ হ'ল আপনি এসএসএইচ এজেন্টে অনেক বেশি পরিচয় যুক্ত করেছেন।

এখানে কয়েকটি পরামর্শ দেওয়া হল:

  • -vএটি কেস কিনা তা দেখতে যোগ করুন (আপনি অনেক বেশি পরিচয় ব্যবহার করেছেন)।
  • দ্বারা যুক্ত পরিচয় তালিকা ssh-add -l
  • দ্বারা এজেন্ট থেকে পরিচয় ব্যর্থ সরান: ssh-add -d
  • আপনি ssh-add -Dকেবলমাত্র প্রাসঙ্গিক একটি দিয়ে সমস্ত পরিচয় মুছতে এবং পুনরায় যুক্ত করতে পারেন।
  • আপনি যদি এসএসএইচ সার্ভারে অ্যাক্সেস করে থাকেন তবে MaxAuthTriesবিকল্পটি দেখুন (দেখুন man sshd_config:)।

    সম্পর্কিত পোস্ট: 'ম্যাক্সউথট্রি'স সীমাটির জন্য একটি সংযোগ কী sshd_config?

  • যদি এর কোনওটিই সহায়তা না করে, আপনি সঠিক শংসাপত্র বা ফাইল ব্যবহার করছেন কিনা তা নিশ্চিত করুন।


-1

সঠিক বার্তা এবং পাসওয়ার্ড প্রবেশ করা না হলে এই বার্তাটি উপস্থিত হতে পারে।

প্রথমে ব্যবহারকারীর তালিকাভুক্ত রয়েছে কিনা তা পরীক্ষা করুন:

vim /etc/passwd
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.