একাধিক এসএসএইচ পাবলিক কীগুলি ব্যবহার করা


97

আনফডডলে আমার ব্যক্তিগত অ্যাকাউন্ট এবং একটি কোম্পানির অ্যাকাউন্ট রয়েছে। আনফুটডলে এসএসএইচ কীগুলি কেবল একটি একাউন্টে ব্যবহার করা যেতে পারে, সুতরাং আমার উভয় অ্যাকাউন্টের জন্য আমার ল্যাপটপে একটি পৃথক এসএসএইচ কী তৈরি করতে হবে। আমি ssh-keygen -t rsaবিভিন্ন নামের সাথে দুটি কী তৈরি করতে দৌড়েছি (ব্যক্তিগত নাম ডিফল্ট নাম এবং সংস্থাটি {কোম্পানী} _rsa)। এখন সমস্যাটি হ'ল এটি দেখা যাচ্ছে যে আমার ডিফল্ট কীটি সর্বত্র ব্যবহৃত হয়েছে এবং স্বতন্ত্র ভাণ্ডারের জন্য গিটে কী কী কী নির্দিষ্ট করতে হবে তা আমি খুঁজে পাই না।

সুতরাং আমার প্রশ্নটি হল: রেপো-টু-রেপো ভিত্তিতে আমি কীভাবে একটি এসএসএইচ কীটি নির্দিষ্ট করব?

আমি আমার ssh_config (~ / .ssh / config) সেটআপ করেছি তবে এটি এখনও কাজ করে না বলে মনে হচ্ছে।

কনফিগ:

Host {personalaccount}.unfuddle.com
     HostName {personalaccount}.unfuddle.com
     User git
     IdentityFile /Users/dave/.ssh/id_rsa

Host {companyaccount}.unfuddle.com
     HostName {companyaccount}.unfuddle.com
     User git
     IdentityFile /Users/dave/.ssh/cage_rsa

আমার সংস্থার অবাস্তল অ্যাকাউন্টে রেপোর জন্য আমার গিট রেপো কনফিগারেশন ফাইলটি দেখতে এই রকম দেখাচ্ছে:

[remote "origin"]
     url = git@{companyaccount}.unfuddle.com:{companyaccount}/overall.git
     fetch = +refs/heads/*:refs/remotes/origin/*

সুতরাং আমি নিশ্চিত না যে আমার এসএসএস কনফিগারেশন বা গিট কনফিগারেশনে কোনও সমস্যা আছে কিনা।


আপনার ssh কনফিগারেশনটি ঠিক দেখাচ্ছে, আমি একই ধরণের কনফিগারেশন ব্যবহার করছি।
পাওলো ইবারম্যান

উত্তর:


109

আপনি একটি সক্রিয় থাকে SSH-এজেন্ট আপনার করেছে id_rsaকী লোড, তারপর সমস্যা হল সম্ভাবনা থাকে SSH যে কী প্রস্তাব করা হয় প্রথম। আনফডল সম্ভবত প্রমাণীকরণের জন্য এটি গ্রহণ করে (উদাহরণস্বরূপ sshd ) তবে সংস্থাটির সংগ্রহস্থলগুলিতে অ্যাক্সেসের অনুমোদনের জন্য এটি প্রত্যাখ্যান করে (উদাহরণস্বরূপ তারা অনুমোদনের জন্য অভ্যন্তরীণ সফ্টওয়্যার যা কিছু ব্যবহার করে সম্ভবত গিটোলাইটের সদৃশ কিছু)। সম্ভবত কোম্পানির অ্যাকাউন্টে আপনার ব্যক্তিগত কী যুক্ত করার কোনও উপায় রয়েছে (একাধিক লোক একই corp_rsaসরকারী এবং ব্যক্তিগত কী ফাইলগুলি ভাগ করছে না , তারা কি?)।


IdentitiesOnly .ssh/configকনফিগারেশন শব্দ কী যে সীমা ব্যবহার করা যেতে পারে SSH দূরবর্তী প্রস্তাব sshd কমান্ড মাত্র মাধ্যমে নিদিষ্ট যারা IdentityFileকিওয়ার্ড (যেমন এটা কোন অতিরিক্ত চাবি একটি সক্রিয় মধ্যে লোড করা ঘটতে ব্যবহার করতে আপত্তি করবে SSH-এজেন্ট )।

এই .ssh/configবিভাগগুলি ব্যবহার করে দেখুন:

Host {personalaccount}.unfuddle.com
     IdentityFile ~/.ssh/id_rsa
     IdentitiesOnly yes

Host {companyaccount}.unfuddle.com
     IdentityFile ~/.ssh/{companyaccount}_rsa
     IdentitiesOnly yes

তারপরে, এই জাতীয় গ্রিট ইউআরএল ব্যবহার করুন:

git@{personalaccount}.unfuddle.com:{personalaccount}/my-stuff.git
git@{companyaccount}.unfuddle.com:{companyaccount}/their-stuff.git

আপনি যদি এই .ssh/configপ্রক্রিয়াটির পুরো সদ্ব্যবহার করতে চান তবে আপনি নিজের কাস্টম হোস্টনাম সরবরাহ করতে এবং ডিফল্ট ব্যবহারকারীর নাম পরিবর্তন করতে পারেন:

Host uf-mine
     HostName {personalaccount}.unfuddle.com
     User git
     IdentityFile ~/.ssh/id_rsa
     IdentitiesOnly yes

Host uf-comp
     HostName {companyaccount}.unfuddle.com
     User git
     IdentityFile ~/.ssh/{companyaccount}_rsa
     IdentitiesOnly yes

তারপরে, এই জাতীয় গ্রিট ইউআরএল ব্যবহার করুন:

uf-mine:{personalaccount}/my-stuff.git
uf-comp:{companyaccount}/their-stuff.git

7
যদি একই আনফুটল সাবডোমেনে (বিভিন্ন এসএসএইচ কী সহ) আপনার একাধিক অ্যাকাউন্ট থাকে তবে আপনার দ্বিতীয় পদ্ধতিটি ব্যবহার করতে হবে।
লিওলোবাটো

পরিচয়গুলি কেবলমাত্র আমার গিটোলাইট সেটআপে আমার জন্য প্রয়োজনীয় ছিল, ধন্যবাদ!
কোয়েন

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

1
@ ড্র: যদি ইতিমধ্যে কীটি এজেন্টের মধ্যে লোড করা থাকে, তবে কমান্ডটি এখনও এজেন্টের কাছ থেকে এটি আঁকতে হবে। আপনি কি নিশ্চিত যে আপনার চাবি প্রাক লোড হয়েছে? ssh-add -lআপনি আপনার গিট হোস্ট উপনামটি ব্যবহার করার আগে পরীক্ষা করুন । জনসাধারণের কী ফাইল যাতে উপস্থিত থাকা প্রয়োজন SSH কী চিনতে পারে SSH-এজেন্ট সংরক্ষণ করা হয়। আপনি .pubকোনও কমান্ডের সাহায্যে হারিয়ে যাওয়া ফাইলটি পুনরায় জেনারেট করতে পারেন ssh-keygen -f blah -y > blah.pub
ক্রিস জনসন

হ্যাঁ এটা সেখানে আছে। আমি যখন আইডেন্টিটিস কেবল কলটি সরিয়ে ফেলি তখন এটি গিথবকে 4 টি বিভিন্ন কী (সঠিক এক ডাব্লু / ও পাসফ্রেজের জন্য জিজ্ঞাসা সহ) প্রেরণ করে। আমি যখন কল যুক্ত করি তখন এটি কেবল একটি কী প্রেরণ করে তবে প্রতিবারই পাসফ্রেজের জন্য অনুরোধ করে। এমনকি যখন আমি ওএসএক্সকে পাসফ্রেজ মানটি এর কীচেইনে সঞ্চয় করতে বলি।
ড্রয়

3

man ssh_config

কিছুটা এইরকম

Host personal_repo
  User personal
  IdentityFile .ssh/personal_rsa

Host company_repo
  User company
  IdentityFile .ssh/company_rsa

এবং personal_repoআপনার গিট রেপোতে হোস্ট হিসাবে ব্যবহার করুন ।


তাস, আপনি কি আমার উপরের পরিবর্তনগুলি পর্যালোচনা করতে পারেন? আমি আমার ssh_config এবং আমার গিট কনফিগারেশন যুক্ত করেছি।

Hostকেবলমাত্র শনাক্তকারী - পুরো ডোমেন নামের প্রয়োজন নেই। এটি সম্ভবত কিছু লুকানো বাগ তৈরি করে। যদি আপনি এটি পরিবর্তন করেন তবে আপনার গিট কনফিগারেশনে আপনার পুরো নামের বানান করতে হবে না।

গিটারিয়াস, ব্যবহারকারীর জন্য = গিট এবং হোস্ট gitorious.org: যেমন git@gitorious.org: ~ revelut / qt / bruce-sandbox-qt.git আপনি কীভাবে আপনার হোস্টে ইউআরএলের একটি অংশ মেলে? (সাধারণত আমার জন্য উদ্দীপনা)

@ তাস তাই যদি আমি এসএসএইচ কনফিগারেশনে কোম্পানী_উনফুডল নামটি দিয়ে থাকি তবে আমার ইউআরএলটি কি গিট @ কোম্পানী_উনফুডল হওয়া উচিত: {কোম্পানী ove / ওভারআর.প্রেম? @ ব্রুস - আপনি কী জিজ্ঞাসা করছেন তা আমি নিশ্চিত নই। আপনি কি আরও কিছুটা প্রসারিত করতে পারেন?

3

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

আমি সম্প্রতি ব্যবহার শুরু করেছি:

https://github.com/ccontavalli/ssh-ident

এটি ssh এর চারপাশে একটি মোড়ক, এটি:

  • আপনার নির্ধারিত প্রতিটি পরিচয়ের জন্য সম্পূর্ণ পৃথক এজেন্ট রাখে।
  • লগইন সেশনগুলির মধ্যে স্বয়ংক্রিয়ভাবে এজেন্টদের ভাগ করে নেবে, আপনার .bashrc এ কিছুই করার নেই।
  • আপনি যখন প্রথমবার প্রয়োজন তখন এজেন্ট এবং সম্পর্কিত কীগুলি চাহিদা অনুযায়ী লোড করে।
  • ssh কমান্ড লাইন (হোস্টনাম এবং এই জাতীয়) বা আপনার বর্তমান ওয়ার্কিং ডিরেক্টরিের ভিত্তিতে কোন এজেন্টটি ব্যবহার করবেন তা নির্ধারণ করে। আমি যা করছি তার উপর নির্ভর করে আমি বিভিন্ন পাথ থেকে কাজ করার প্রবণতাটি বিশেষত এটি সহজ।

0

আপনি ssh এজেন্ট ব্যবহার করতে চাইলে এখানে একটি সঠিক উপায়:

# Create public keys to make sure they exist
# this is a must if you use ssh agent forwarding
# or want to use ssh-agent at all
ssh-add -L | grep personal > ~/.ssh/personal_identity.pub
ssh-add -L | grep company > ~/.ssh/company_identity.pub


# Add to ~/.ssh/config
Host {personalaccount}.unfuddle.com
  IdentityFile ~/.ssh/personal_identity.pub

Host {companyaccount}.unfuddle.com
  IdentityFile ~/.ssh/company_identity.pub

ব্যাখ্যা: আপনার যদি আপনার ~ / .ssh ডিরেক্টরিতে ব্যক্তিগত কী থাকে তবে ssh-এজেন্ট ব্যবহার করা হবে না। সুতরাং আমরা অন্য নামে পাবলিক কী তৈরি করি, যাতে ssh ssh-এজেন্ট ব্যবহার করতে বাধ্য হয়। আপনার ব্যক্তিগত কীতে অ্যাক্সেস না থাকলে (যেমন ssh এজেন্ট ফরওয়ার্ডিং) এটিও সহায়তা করে


এটি হতে পারে ssh-add -L, না ssh-agent
ives

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