Ssh কী নামকরণ করা প্রয়োজন id_rsa?


130

কীড প্রমাণীকরণের সাথে বিল্ড সার্ভার তৈরি করার সময় আমি কয়েকবার এই সমস্যাটি জুড়ে এসেছি।

আমি ভাবছিলাম যে অন্য কারও কাছে এটির অভিজ্ঞতা আছে কিনা। আমার বর্তমান ব্যবহারকারীর জন্য বেশ কয়েকটি কী রয়েছে যা বিভিন্ন মেশিনে সংযুক্ত হতে পারে। যাক যন্ত্র 1 এবং মেশিন 2। আমি আমার সর্বজনীন কীগুলি তাদের নিজ নিজ অনুমোদিত_কিজ ফাইলগুলিতে আটকিয়েছি। প্রথমটি আমি প্রথম কী id_rsa এবং দ্বিতীয় কী বেন্ডারের নাম রেখেছি।

আমি যখন বেন্ডারে সংযোগের চেষ্টা করব তখন আমি আমার ভার্বোজ এসএসএস সংযোগের সাথে নিম্নলিখিত আউটপুটটি পাই

debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/bozo/.ssh/.ssh/identity
debug1: Trying private key: /home/bozo/.ssh/.ssh/id_rsa
debug1: Trying private key: /home/bozo/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

আপনি কেবল উপরে দেখতে পারেন এটি কেবল id_rsa কী সরবরাহ করে। এটা কি সঠিক? যদি তাই হয় কেন? আমি কীভাবে এটি আরও কী সরবরাহ করতে পারি? আমি জানি যে এটি মাঝেমধ্যে আমি দেখতে পাই এটি একটি সমস্যা, কারণ বাড়িতে আমার খুব বেশি ঝামেলা ছাড়াই একাধিক কী রয়েছে।

আমি কীভাবে পাব এবং ব্যক্তিগত কীগুলি ক্লায়েন্ট এবং সার্ভারের সাথে ইন্টারঅ্যাক্ট করে সে সম্পর্কে একটি ওভারভিউকে প্রশংসা করব। আমি ভেবেছিলাম আমার একটি সুন্দর শালীন ধারণা আছে, তবে দৃশ্যত আমি কিছু মিস করছি।

অনুগ্রহ করে এবং ধন্যবাদ.

উত্তর:


156

ডিফল্টরূপে, এসএসএস অনুসন্ধান id_dsaএবং id_rsaফাইলগুলি। কীগুলি এর মতো নামকরণ করার দরকার নেই, আপনি এটির mykeyপাশাপাশি নাম রাখতে পারেন , বা এটি অন্য কোনও ডিরেক্টরিতেও রাখতে পারেন। যাইহোক, আপনি যদি সেগুলির মধ্যে একটিও করেন তবে আপনার অবশ্যই স্পষ্টভাবে ssh কমান্ডের কীটি উল্লেখ করতে হবে:

ssh user@server -i /path/to/mykey

যদি কোনও কমান্ড গ্রহণ না করে -i, উদাহরণস্বরূপ sshfs, IdentityFileবিকল্পটি ব্যবহার করুন :

sshfs -o IdentityFile=/path/to/mykey user@host:/path/on/remote /mountpoint

কিভাবে এটা কাজ করে

একটি কী তৈরি করার সময়, আপনি দুটি ফাইল পাবেন: id_rsa(ব্যক্তিগত কী) এবং id_rsa.pub(সর্বজনীন কী)। তাদের নামগুলির হিসাবে, ব্যক্তিগত কীটি গোপন রাখতে হবে এবং সর্বজনীন কী জনসাধারণের কাছে প্রকাশ করা যেতে পারে।

সর্বজনীন-কী প্রমাণীকরণ একটি সর্বজনীন এবং একটি ব্যক্তিগত কী নিয়ে কাজ করে। ক্লায়েন্ট এবং সার্ভার উভয়েরই নিজস্ব কী রয়েছে। openssh-serverসার্ভারটি ইনস্টল করার সময় সরকারী এবং ব্যক্তিগত কীগুলি স্বয়ংক্রিয়ভাবে উত্পন্ন হয়। ক্লায়েন্টের জন্য, আপনার নিজের এটি করতে হবে।

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

সার্ভারটি আপনাকে সংযোগ দেওয়ার অনুমতি দেওয়া হয়েছে কিনা তা পরীক্ষা করে দেখায় (সংজ্ঞায়িত /etc/ssh/sshd_config) এবং যদি আপনার সর্বজনীন কীটি ~/.ssh/authorized_keysফাইলে তালিকাভুক্ত থাকে। পাবলিক কীকে অস্বীকার করার সম্ভাব্য কারণগুলি:

  • /etc/ssh/sshd_config:
    • AllowUsersবা AllowGroupsনির্দিষ্ট করা আছে, তবে আপনার সার্ভার ব্যবহারকারীর গোষ্ঠী বা ব্যবহারকারীদের তালিকায় তালিকাভুক্ত নেই (ডিফল্ট সংজ্ঞায়িত নয়, ব্যবহারকারী বা গোষ্ঠীগুলিকে লগ ইন করতে কোনও বাধা নেই)।
    • DenyUsersবা DenyGroupsনির্দিষ্ট করা হয়েছে এবং আপনি ব্যবহারকারী বা গোষ্ঠী তালিকায় আছেন।
    • আপনি রুট হিসাবে লগইন করার চেষ্টা করছেন, তবে PermitRootLoginসেট করা No(ডিফল্ট yes)।
    • PubkeyAuthenticationNo(ডিফল্ট yes) এ সেট করা আছে ।
    • AuthorizedKeysFileএকটি পৃথক স্থানে সেট করা আছে, এবং সর্বজনীন কীগুলি সেই ফাইলে যোগ করা হয়নি (ডিফল্ট .ssh/authorized_keys, হোম ডিরের সাথে সম্পর্কিত)
  • ~/.ssh/authorized_keys: এই ফাইলটিতে আপনার সর্বজনীন কী যুক্ত করা হয়নি (নোট করুন যে এই ফাইলটি রুট ব্যবহারকারী হিসাবে পড়েছে)

একাধিক কী ব্যবহার করা হচ্ছে

একাধিক কী ব্যবহার করা অস্বাভাবিক নয়। চলমান পরিবর্তে ssh user@host -i /path/to/identity_file, আপনি একটি কনফিগারেশন ফাইল ব্যবহার করতে পারেন ~/.ssh/config,।

সাধারণ সেটিংস হ'ল আইডেন্টিটি ফাইল (কীগুলি) এবং পোর্ট। পরবর্তী কনফিগারেশনটি কেবল "আইডি_ডিএসএ" এবং "বেন্ডার" চেক করবে কেবল যখন এর সাথে সংযোগ করার সময় ssh youruser@yourhost:

Host yourhost
   IdentityFile ~/.ssh/id_dsa
   IdentityFile ~/.ssh/bender

যদি আপনি বাদ দেন Host yourhostতবে সেটিংস সমস্ত এসএসএইচ সংযোগে প্রযোজ্য হবে। অন্যান্য অপশন এছাড়াও, মত এই হোস্ট ম্যাচের জন্য সুনির্দিষ্ট করা যেতে পারে User youruser, Port 2222ইত্যাদি এই আপনি সাধারণভাবে সংক্ষেপে সাথে সংযুক্ত হওয়ার জন্য সম্ভব হবে ssh yourhostপরিবর্তে ssh -p2222 youruser@yourhost -i ~/.ssh/id_dsa -i ~/.ssh/bender


1
আমাকে কীটি নির্দিষ্ট করতে হবে? পুরো বিষয়টি হ'ল আমি মেশিনে আরও সহজেই এসশ করতে পারি।
myusuf3

2
@ স্টিভেন রুজ থেকে ssh_config(5): ফাইলের নাম ব্যবহারকারীর হোম ডিরেক্টরি বা নীচের একটি পালানো অক্ষরের উল্লেখ করতে টিলড সিনট্যাক্স ব্যবহার করতে পারে: '% ডি' (স্থানীয় ব্যবহারকারীর হোম ডিরেক্টরি), '% ইউ' (স্থানীয় ব্যবহারকারীর নাম), '% l '(স্থানীয় হোস্টের নাম),'% h '(দূরবর্তী হোস্টের নাম) বা'% r '(দূরবর্তী ব্যবহারকারীর নাম)। ওয়াইল্ড কার্ডগুলি নির্দিষ্ট করা সম্ভব নয়, তবে এটি অনুমান করার মতো সুবিধাজনক হওয়া উচিত। সচেতন হন যে কোনও সার্ভারকে আপনার প্রেরিত প্রতিটি কী তদন্ত করতে হবে, তাই কম কীগুলি নির্দিষ্ট করা আরও ভাল। হোস্ট ওয়ার্কে ওয়াইল্ডকার্ডস, এর ম্যানুয়াল পৃষ্ঠাটি আবার দেখুন ssh_config(5)
লেকেনস্টেইন

2
@ অন্যরকম জ্ঞান প্রতি মেশিনের জন্য আপনাকে কোনও অনন্য কী জুড়ি তৈরি করতে হবে না। সাধারণত আপনার কাছে কয়েকটি কী থাকে এবং .ssh/authorized_keysদূরবর্তী মেশিনে থাকা ফাইলের একটিতে কীগুলির সর্বজনীন কী যুক্ত করুন । আপনি যদি স্ট্যান্ডার্ড .ssh/id_rsaফাইলের নাম (বা id_dsa, id_ecdsa বা সাম্প্রতিক id_ed25519) ব্যবহার করেন তবে ssh এটি স্বয়ংক্রিয়ভাবে চেষ্টা করবে এবং আপনাকে IdentityFileআপনার কনফিগারেশনে নির্দিষ্ট করার প্রয়োজন নেই (বা এর জন্য -i path/to/id_fileপ্যারামিটার ssh)।
লেকেনস্টেইন

4
আমি এমন উত্তরগুলি পছন্দ করি যা প্রয়োজনীয় বিশদ ছাড়িয়ে যায় এবং ধারণাটি ব্যাখ্যা করতে সময় নেয়। চমৎকার কাজ! +1
ব্যবহারকারী 2490003

1
@ ল্যান্ডেড এটি এসএসএইচ সার্ভারের হোস্ট (এটি কোনও আইপি ঠিকানা বা ডিএনএস নাম হতে পারে)। আমি এই বিভাগটি পরিষ্কার করার চেষ্টা করেছি, আশা করি এটি সাহায্য করবে।
লেকেনস্টেইন

40

আমার প্রিয় পদ্ধতিটি ব্যক্তিগত কীটি স্বয়ংক্রিয়ভাবে নির্বাচনের অনুমতি দেয়

IdentityFile ~/.ssh/%l_%r@%h_id_rsa

স্থানীয় মেশিনের নামের সাথে এসএসএইচ% l, দূরবর্তী ব্যবহারকারীর নাম দিয়ে% টি, এবং% h রিমোট হোস্টের সাথে প্রতিস্থাপন করবে, এভাবে যদি আমি আমার মেশিন থেকে foo টু বার নামে পরিচিত হিসাবে ব্যবহারকারী হিসাবে সংযোগ স্থাপন করতে চাই, তবে আমি চালাব:

ssh bar

এবং ssh স্বয়ংক্রিয়ভাবে ব্যবহার করবে:

~/.ssh/foo_user@bar_id_rsa

স্থানীয় হোস্টটিও সঞ্চিত থাকায়, এটি এনএফএসের সাথে ভাগ করা হোম ডিরেক্টরিগুলি (মেশিনে পৃথক কী!) এমনকি কীটি মেশিনে রয়েছে তা সনাক্তকরণের অনুমতি দেয় ...


1

স্টিভেন রুজের এই মন্তব্যে বিবেচনা করে যে অনেকগুলি কী নির্দিষ্ট করতে আরও বেশি সময় লাগে, এবং আমি অনেকগুলি কী দিয়ে খেলতে যাচ্ছি, আমি আমার ব্যক্তিগত সমাধানটির পরামর্শ দিতে চাই।

আমি সেই সময়ে আমি যে চাবিটি ব্যবহার করতে চাই তার সাথে একটি সিমিলিংক তৈরি করি এবং যেহেতু আমি কেবল কোন প্রকল্পে কাজ করছি তার উপর নির্ভর করে কেবল পরিবর্তন হয় না, আমি এতে খুশি with

ভার্চুয়ালবক্সের অধীনে চলমান মেশিনগুলির জন্য আমি আমার কীগুলির সাথে লিঙ্ক করেছি:

$ cd .ssh/
$ ln -s adam_vbox-id_rsa.pub id_rsa.pub
$ ln -s adam_vbox-id_rsa id_rsa

$ ls -l
total 12
-rw------- 1 adam adam 1675 2013-10-04 02:04 adam_vbox-id_rsa
-rw-r--r-- 1 adam adam  396 2013-10-04 02:04 adam_vbox-id_rsa.pub
lrwxrwxrwx 1 adam adam   16 2013-10-04 02:17 id_rsa -> adam_vbox-id_rsa
lrwxrwxrwx 1 adam adam   20 2013-10-04 02:17 id_rsa.pub -> adam_vbox-id_rsa.pub
-rw-r--r-- 1 adam adam 3094 2013-10-04 02:09 known_hosts

ম্যানুয়ালি ln কমান্ডটি আবার টাইপ না করেই অন্য সেটটিতে পরিবর্তনের জন্য কেউ একটি দ্রুত স্ক্রিপ্ট যুক্ত করতে পারে ।

আবার, এটি কেবল দুটি কীগুলির জন্য কোনও সমাধান নয়, তবে একটি বৃহত্তর সংখ্যার জন্য এটি কার্যকর হতে পারে।


1
আমি যে প্রতিটি সার্ভারের সাথে কাজ করি তার জন্য আমি bash_profile দ্বারা একটি উপনাম যুক্ত করব। সুতরাং বোব নামে একটি সার্ভারের জন্য আমার কেবল এটি আছে ... ওরফে বব = "ssh bob.example.com -l পিট -i / পাথ / টু / কী" - তবে আমি কেবল বব টাইপ করি - এবং আমি ভিতরে আছি!
পিটার বাগনল

2
"আপনি ইতিমধ্যে জানেন যেভাবে জিনিসগুলি সম্পন্ন করা" কখনও কখনও সহজ তবে আপনি .ssh / configs কী এবং হোস্ট সেটআপ করলে আরও সহজ পন্থা থাকে। এই মন্তব্য মন্তব্য পোস্টার এবং মন্তব্যকারী উভয়কেই নির্দেশিত হয়েছে @ পিটার-বাগনাল
স্কট প্রাইভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.