উবুন্টুতে কীভাবে স্থায়ীভাবে এসএসএড যুক্ত একটি প্রাইভেট কী যুক্ত করবেন? [বন্ধ]


474

এসএসএইচ মাধ্যমে সার্ভার অ্যাক্সেস করার জন্য আমার কাছে একটি ব্যক্তিগত কী পাসওয়ার্ড সহ সুরক্ষিত রয়েছে।

আমার কাছে 2 টি লিনাক্স (উবুন্টু 10.04) মেশিন রয়েছে এবং ssh-add কমান্ডের ব্যবহার উভয়ের মধ্যেই আলাদা।

একটি মেশিনে, একবার আমি "ssh-add .ssh / পরিচয়" ব্যবহার করি এবং আমার পাসওয়ার্ড প্রবেশ করালে, কীটি স্থায়ীভাবে যুক্ত করা হয়, অর্থাৎ প্রতিবার আমি কম্পিউটারটি বন্ধ করে আবার লগইন করলে কীটি ইতিমধ্যে যুক্ত হয়ে যায়।

অন্যটিতে, আমি যখনই লগইন করি তখন আমাকে কীটি যুক্ত করতে হবে।

যতদূর আমার মনে আছে, আমি দুজনের উপর একই জিনিস করেছি। পার্থক্যটি হ'ল স্থায়ীভাবে যুক্ত হওয়া একটিতে কী তৈরি করা হয়েছিল।

এটি কীভাবে অন্য মেশিনে স্থায়ীভাবে যুক্ত করা যায় তা কি কেউ জানেন?


1
এজেন্ট কেবল অস্থায়ী হতে হবে; তবে উভয় মেশিনের যে
কোনও

উত্তর:


631

একটি সমাধান হ'ল কী ফাইলগুলি আপনার ~/.ssh/configফাইলে যুক্ত করে স্থায়ীভাবে রাখতে বাধ্য করা হয় :

IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer

যদি আপনার config / .ssh ডিরেক্টরিতে কোনও 'কনফিগার' ফাইল না থাকে তবে আপনার একটি তৈরি করা উচিত। এটির মূলের অধিকারের দরকার নেই, তাই সহজভাবে:

nano ~/.ssh/config

... এবং আপনার প্রয়োজনীয়তা অনুসারে উপরের লাইনগুলি প্রবেশ করান।

এটি কাজ করার জন্য ফাইলটিতে chmod 600 থাকা দরকার You আপনি কমান্ডটি ব্যবহার করতে পারেন chmod 600 ~/.ssh/config

আপনি যদি কম্পিউটারের সমস্ত ব্যবহারকারী কী ব্যবহার করতে চান তবে এই লাইনগুলিতে /etc/ssh/ssh_configএবং কীটি সকলের কাছে অ্যাক্সেসযোগ্য ফোল্ডারে রেখে দিন।

অতিরিক্ত হিসাবে আপনি যদি একটি হোস্টের জন্য নির্দিষ্ট কীটি সেট করতে চান, আপনি আপনার। / .Ssh / কনফিগারেশনে নিম্নলিখিতটি করতে পারেন:

Host github.com
    User git
    IdentityFile ~/.ssh/githubKey

আপনার যখন অনেকগুলি পরিচয় থাকে তখন এর সুবিধা রয়েছে যে কোনও সার্ভার আপনাকে প্রত্যাখ্যান করবে না কারণ আপনি প্রথমে ভুল পরিচয় চেষ্টা করেছিলেন। শুধুমাত্র নির্দিষ্ট পরিচয় চেষ্টা করা হবে।


82
কনফিগার ফাইলে অনুমতিগুলি 600 হতে হবেchmod 600 config
জেনারেলপিনিয়ন

6
আমাকে প্রতিটি পাসওয়ার্ড আনতে হবে বা এটির সাথে ক্লোন করতে হবে, আমি কীভাবে এড়াতে পারি?
আসফ

9
পরিবর্তে ব্যবহার করুন ssh-add ~/.ssh/gitHubKey, এটি আপনার কী পাসফ্রেজ মনে রাখবে। আমি প্রস্তাবিত সমাধানটি হ'ল এটি পুনরায় বুটগুলিতে স্থায়ীভাবে সেট করা।
দামেনেট্রেগ

28
এই উত্তরটি এত ভাল যে ssh- অ্যাড থাকা উচিত নয়। কে একটি আদেশ দিতে চায় যা "সাময়িকভাবে" কোনও সমস্যা সমাধান করে এবং অপ্রত্যাশিতভাবে ব্রেক হয়ে যায় যখন আপনি কেবল একটি কনফিগার ফাইল স্থায়ীভাবে সম্পাদনা করতে পারবেন।
রাসেল স্টেওয়ার্ট

2
সমস্যাটি এই জাতীয় কনফিগারেশনের সাথে রয়েছে, আপনি যদি কোনও নির্দিষ্ট হোস্টের জন্য .ssh / config এ না করেন তবে আপনি প্রতিবার সমস্ত সার্ভারের বিপরীতে সমস্ত কী ব্যবহার করার চেষ্টা করবেন।
দামেনেট্রেগ

118

এটি ম্যাক ওএস এক্স লায়নটির অধীনে আমার জন্য একই সমস্যার উত্তর দেয়নি। আমি যোগ করে শেষ করেছি:

ssh-add ~/.ssh/id_rsa &>/dev/null

আমার .zshrc- এর কাছে (তবে। প্রোফাইলটিও ভাল থাকবে), যা এটি ঠিক করে দিয়েছে।

(এখানে প্রস্তাবিত হিসাবে: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )


6
এটি আমি প্রস্তাবিত সমাধানের চেয়ে ভাল বলে মনে করি, কারণ এসএসএড অ্যাড একটি প্রমাণীকরণ এজেন্ট ব্যবহার করে যা কোনও সুরক্ষিত প্রাইভেট কীটির পাসফ্রেজ মনে রাখতে পারে, যাতে প্রতিবার প্রমাণীকরণের চেষ্টা করার সময় আপনাকে এটি টাইপ করার প্রয়োজন হয় না। আপনার প্রস্তাবিত সমাধানের আরেকটি সুবিধা হ'ল যদি আপনার কাছে প্রচুর কী থাকে তবে ssh ক্লায়েন্ট আপনি যে সার্ভারের সাথে সংযোগ স্থাপনের চেষ্টা করছেন তার জন্য কীগুলি অপ্রাসঙ্গিকভাবে প্রস্তাব করবেন না, এটি কেবল এই সার্ভারের জন্য কীগুলি সরবরাহ করবে এবং জিতেছে ' ssh / কনফিগারেশনে তালিকাভুক্ত সমস্ত কীগুলি চেষ্টা করার সময় ম্যাক্সথথ ট্রাইজে পৌঁছানোর কারণে সার্ভারটির সংযোগ প্রত্যাখ্যান করার পথে নেতৃত্ব দেয় না।
দামিনিট্রেগ

1
ধন্যবাদ @ ডামিনেট্রেগ আমার বিশেষ সমস্যাটির জন্য আমার ব্যক্তিগত কী এটিতে স্থানান্তরিত না করে ডেভলপমেন্ট মেশিনে গিটোসিস অ্যাক্সেস করা দরকার ছিল। এই সমাধানটি ( ForwardAgent yesআমার যোগ করার সাথে সাথে .ssh/config) সমস্যাটিকে চমত্কারভাবে সমাধান করেছে। এটি সক্রিয় হিসাবে, এটি ঠিক এটির ssh-add &>/dev/nullডিফল্ট আচরণ হিসাবে ssh-addপ্রদর্শিত হতে পারে যা আপনার .sshফোল্ডারে এটিতে থাকা কীগুলি যুক্ত করে ।
অ্যারন

1
আমার বোধগম্যতা হল ম্যাক ওএসে একটি-কে সুইচ রয়েছে: stackoverflow.com/questions/1909651/…
নিকু তোফান

3
@TNick -Kওএস এক্স এর কীচেইনে কী যুক্ত করে, যা ওএস এক্স জিইউআইগুলি বিদেশী সার্ভারগুলিতে প্রমাণীকরণ করতে ব্যবহার করে। এই কিউতে থাকা পোস্টারটি এসএসএইচ টানেলের মাধ্যমে সংযুক্ত হচ্ছে তবে এখনও কেবল একটি দূরবর্তী সার্ভারের সাথে সংযুক্ত রয়েছে। - [এসএসএইচ টানেল] -> বি আমি যে কেসটি করছি তা হ'ল আমি একটি রিমোট সার্ভারে আছি তবে আমার হোম সিস্টেমের শংসাপত্রগুলির বিরুদ্ধে প্রমাণীকরণ হওয়া চাই। একটি <- [প্রমাণীকরণ] - বি - [কানেক্ট] -> সি সুতরাং -Kনা আসলে সাহায্য করেন, কিন্তু অন্যান্য প্র: একটি মহান সমাধান
হারুন

112

আমি ম্যাক ওএসএক্সে (10.10) এসএসএস-অ্যাডের জন্য -K বিকল্প ব্যবহার করে সেই সমস্যাটি সমাধান করেছি:

ssh-add -K ~/.ssh/your_private_key

ম্যাকোস 10.12 এর জন্য এবং পরে আপনাকে এখানে বর্ণিত হিসাবে অতিরিক্তভাবে আপনার এসএসএফ কনফিগারেশন সম্পাদনা করতে হবে: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain


3
যারা স্থায়ীভাবে সেট করতে চান তাদের পক্ষে এটি আরও ভাল উত্তর
পাংক্রোকপলি

12
অতএব এই বিট: "ম্যাক ওএসএক্সে (10.10)" ...
অ্যান্ড্রু কে।

1
এটি ম্যাক ওএসএক্সে ভাল এবং কাজ করছে তবে উবুন্টুতে (আমার পরীক্ষায় 14.04) কাজ করে না।
হ্যাক্স্পোর

5
এটি আমার পক্ষে কার্যকর হয়নি (ওএসএক্স 10.12.4 এ)
গুপট্রন

2
man ssh-addম্যাকোস হাই সিয়েরার মতে , ssh-add -Kপাসফ্রেজটি কীচেইনে সংরক্ষণ করবে এবং রিবুট করার পরে কেবল ব্যবহার করুন ssh-add -A, যা আপনাকে আপনার পাসফ্রেজ ইনপুট করার প্রয়োজন হয় না।
ডনসং

36

উবুন্টু কুইক টিপস https://help.ubuntu.com/commune/QuickTips এ উল্লিখিত হিসাবে কেবল কীচেন যুক্ত করুন

কি

অবিচ্ছিন্নভাবে ssh-এজেন্ট আর ssh-add শুরু করার পরিবর্তে আপনার ssh কীগুলি পরিচালনা করতে কীচেইন ব্যবহার করা সম্ভব। কীচেইন ইনস্টল করতে, আপনি কেবল এখানে ক্লিক করতে পারেন, বা কাজটি করতে Synaptic ব্যবহার করতে পারেন বা কমান্ড লাইন থেকে সন্ধান করতে পারেন।

কমান্ড লাইন

ফাইলটি ইনস্টল করার আরেকটি উপায় হ'ল টার্মিনালটি (অ্যাপ্লিকেশন-> আনুষাঙ্গিকগুলি>> টার্মিনাল) খুলুন এবং টাইপ করুন:

sudo apt-get install keychain

ফাইল সম্পাদনা করুন

তারপরে আপনার $ OME HOME} /। Bashrc বা /etc/bash.bashrc এ নিম্নলিখিত লাইনগুলি যুক্ত করা উচিত:

keychain id_rsa id_dsa
. ~/.keychain/`uname -n`-sh

দ্বিতীয় কমান্ড কৌতূহল ছাড়াই ঠিক কী করে? এটি কেবলমাত্র বর্তমান ব্যবহারকারীর জন্য অনুমতিগুলি খুলবে?
ভিনসেন্ট বাসকারেলো

1
এটি .একটি উপনামsource
ব্র্যাড সলোমন

18

আমি @ হারুনের সমাধানটি চেষ্টা করেছিলাম এবং এটি আমার পক্ষে বেশ কার্যকর হয়নি, কারণ আমার টার্মিনালে যখনই নতুন ট্যাবটি খুলবে তখন এটি আমার কীগুলি পুনরায় যুক্ত করবে। সুতরাং আমি এটিকে কিছুটা সংশোধন করেছি (নোট করুন যে আমার বেশিরভাগ কীগুলিও পাসওয়ার্ড-সুরক্ষিত তাই আমি কেবল আউটপুট / dev / নালটিতে প্রেরণ করতে পারি না):

added_keys=`ssh-add -l`

if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
    ssh-add "$HOME/.ssh/my_key"
fi

এটি যা করে তা হ'ল এটি ssh-add -lএকটি নির্দিষ্ট কীটির (যা যুক্ত করা সমস্ত কী তালিকাভুক্ত করে) এর আউটপুট চেক করে এবং যদি এটি খুঁজে না পায় তবে এটি যুক্ত করে ssh-add

এখন প্রথমবার আমি টার্মিনালটি খুললে আমাকে আমার ব্যক্তিগত কীগুলির জন্য পাসওয়ার্ড জিজ্ঞাসা করা হয়েছে এবং আমার কম্পিউটারটি পুনরায় বুট না করা (বা লগআউট - আমি পরীক্ষা করে দেখিনি) না হওয়া পর্যন্ত আমাকে আর জিজ্ঞাসা করা হবে না।

যেহেতু আমার কাছে বেশ কয়েকটি কী রয়েছে আমি ssh-add -lপারফরম্যান্স উন্নত করতে ভেরিয়েবলের আউটপুট সংরক্ষণ করি (কমপক্ষে আমি অনুমান করি যে এটির কার্যকারিতা উন্নতি করে :)

পিএস: আমি লিনাক্সে আছি এবং এই কোডটি আমার ~/.bashrcফাইলে গিয়েছিল - আপনি যদি ম্যাক ওএস এক্সে থাকেন তবে আমি ধরে নিচ্ছি আপনার এটি যুক্ত করা উচিত .zshrcবা.profile

সম্পাদনা: মন্তব্যগুলিতে @ অ্যারনের নির্দেশ অনুসারে, .zshrcফাইলটি zshশেল থেকে ব্যবহৃত হয় - সুতরাং আপনি যদি এটি ব্যবহার না করে থাকেন (তবে আপনি যদি নিশ্চিত না হন তবে সম্ভবত এর bashপরিবর্তে আপনি ব্যবহার করছেন ), এই কোডটি করা উচিত আপনার .bashrcফাইলে যান


3
.zshrcএটি zshশেলের জন্য, যা আমি পরিবর্তে ব্যবহার করি bash। আপনি যদি bashম্যাক ওএস এক্স (ডিফল্ট) ব্যবহার করে থাকেন তবে এটিও .bashrcসেখানে থাকবে ।
হারুন

1
ssh-add -lরিটার্ন কোডের পরে echo $?কী যুক্ত করা হবে কিনা তা সিদ্ধান্ত নিতে ব্যবহার করা যেতে পারে। আমি আমার লিনাক্স মেশিনকে ব্যাশ দিয়েছি, ssh-add -lকী ফাইলটির আউটপুট দেয় না। রিটার্ন কোড সর্বদা কাজ করে।
ভারত জি

12

আমার ক্ষেত্রে সমাধানটি ছিল:

কনফিগার ফাইলে অনুমতিগুলি 600 হওয়া উচিত। chmod 600 config

জেনারেলপিনিয়ন দ্বারা উপরোক্ত মন্তব্যে উল্লিখিত হিসাবে

কনফিগার ফাইলের সামগ্রীগুলির স্পর্শ করার দরকার নেই No


লিনাক্স মিন্ট 17.1 এ আমার পক্ষে যথেষ্ট ছিল না।
বেনারস

আমি মনে করি না 600 বোঝা তোলে। man ssh আমাদের জানায় যে ~/.ssh/configফাইলটি ব্যবহারকারীর জন্য পড়তে / লেখার জন্য এবং অন্যের দ্বারা লিখিত হয় না।
ডনসং

600 ব্যবহারকারীর জন্য 600 টি পঠিত এবং লিখিত হয়
উত্সাহীমাস

6

উবুন্টু ১ 16.০৪-তে আমার একই সমস্যা ছিল: কিছু কীগুলি স্থায়ীভাবে যুক্ত করা হয়েছিল, অন্যদের জন্য আমাকে ssh-addপ্রতিটি সেশনে চালিয়ে যেতে হয়েছিল। আমি জানতে পেরেছি যে কীগুলি স্থায়ীভাবে যুক্ত হয়েছিল সেগুলির ব্যক্তিগত এবং সরকারী কী উভয়ই ছিল ~/.sshএবং যে কীগুলি প্রতিটি সেশনে ভুলে গিয়েছিল সেখানে কেবল ~/.sshডাইর মধ্যে ব্যক্তিগত কী ছিল । সুতরাং সমাধানটি সহজ: কার্যকর করার আগে আপনার ব্যক্তিগত এবং সর্বজনীন কী উভয়ই অনুলিপি করা উচিত ।~/.sshssh-add

পিএস: আমি জিনোম উইকি থেকে যতদূর বুঝতে পারি আমার পদ্ধতি জিনোম-কীরিং সরঞ্জামকে ধন্যবাদ জানায় যা জিনোম ডেস্কটপ পরিবেশের অংশ। সুতরাং আপনি যদি জিনোম বা জিনোম ভিত্তিক ডিই ব্যবহার করেন তবে আমার পদ্ধতিটি সম্ভবত কাজ করা উচিত।


1
আন্ডাররেটেড উত্তর। এটি দুই ঘন্টা অনুসন্ধানের পরে অতিরিক্ত স্ক্রিপ্ট বা প্যাকেজগুলির প্রয়োজন ছাড়াই আমার সমস্যার সমাধান করে।
etagenklo 16'19

ফ্লারকিন কল্পিত! দুর্দান্ত গোয়েন্দা কাজ। আমি মনে করি না যে আমি এটি খুঁজে বের করতে পারে।
নিকোরেলিয়াস

4

"। / .Bashrc" এ নিম্নলিখিত লাইনগুলি যুক্ত করা আমার জন্য সমস্যাটি সমাধান করেছে। আমি উবুন্টু 14.04 ডেস্কটপ ব্যবহার করছি।

eval `gnome-keyring-daemon --start`
USERNAME="reynold"
export SSH_AUTH_SOCK="$(ls /run/user/$(id -u $USERNAME)/keyring*/ssh|head -1)"
export SSH_AGENT_PID="$(pgrep gnome-keyring)"

3

উবুন্টু 14.04 এ (সম্ভবত আগে, সম্ভবত এখনও) আপনার এমনকি কনসোলের প্রয়োজন নেই:

  • seahorseআপনি "কী" সন্ধান করছেন এমন জিনিসটি শুরু বা চালু করুন
  • সেখানে একটি এসএসএইচ কী তৈরি করুন (বা একটি আমদানি করুন)
    • পাসফ্রেজ খালি রাখার দরকার নেই
    • এটি আপনাকে সার্ভারের সর্বজনীন কীটি (বা আরও) ধাক্কা দেওয়ার জন্য প্রস্তাব করা হয়
  • আপনি একটি ssh- এজেন্ট চলমান এবং এই কী বোঝায়, কিন্তু লক করা শেষ হবে
  • sshএজেন্টের মাধ্যমে সনাক্তকরণটি (যেমন কী) ব্যবহার করবে
  • অধিবেশন চলাকালীন প্রথম ব্যবহারে, পাসফ্রেজ পরীক্ষা করা হবে
    • এবং আপনার লগইনটিতে কীটি স্বয়ংক্রিয়ভাবে আনলক করার বিকল্প রয়েছে
    • এর অর্থ কীটির পাসফ্রেজ মোড়ানোর জন্য লগইন অনুমোদন ব্যবহৃত হবে
  • দ্রষ্টব্য: আপনি যদি নিজের পরিচয় ফরওয়ার্ড করতে চান (যেমন এজেন্ট-ফরওয়ার্ডিং) আপনার sshসাথে অনুরোধ করুন -Aবা এটি ডিফল্ট করুন
    • অন্যথায় আপনি যে মেশিনটি পরে কোনও তৃতীয় মেশিনে লগইন করেন সেই চাবি দিয়ে প্রমাণীকরণ করতে পারবেন না

3

আমি দুটি আইডি_আরসা কী ব্যবহার করে উবুন্টু চালাচ্ছি। (কাজের জন্য একটি ব্যক্তিগত এক)। ssh-add একটি কী (ব্যক্তিগত এক) মনে রাখবে এবং প্রতিবার সংস্থাকে ভুলে যাবে।

দুজনের মধ্যে পার্থক্য পরীক্ষা করে দেখলাম আমার ব্যক্তিগত কীতে 400 টি অধিকার রয়েছে এবং কোম্পানির একটির 600 টি অধিকার রয়েছে। (আপনার + ডাব্লু) ছিল সরাসরি কোম্পানির কী (ইউডু বা 400 এ সেট) থেকে ব্যবহারকারী লেখার সরানো আমার সমস্যার সমাধান করেছে। ssh-add এখন উভয় কী মনে রাখে।



1

খুব সাধারণ ^ _ ^ দুটি পদক্ষেপ

1.আম কিচেন ইনস্টল করুন

.বাশ_প্রফাইলে নীচে কোড যুক্ত করুন

/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh

12
উবুন্টুর কাছে ইয়াম সিলি নেই;)
অ্যাডাম এফ

1

যারা ফিশ শেল ব্যবহার করেন তাদের জন্য আপনি নিম্নলিখিত ফাংশনটি ব্যবহার করতে পারেন তারপরে ~/.config/fish/config.fishবা এটিকে একটি পৃথক কনফিগারেশন ফাইলে কল করতে পারেন ~/.config/fish/conf.d/loadsshkeys.fish। এটি id_rsa দিয়ে শুরু হওয়া সমস্ত কীগুলিকে এর মধ্যে লোড করবে ssh-agent

# Load all ssh keys that start with "id_rsa"
function loadsshkeys
  set added_keys (ssh-add -l)
   for key in (find ~/.ssh/ -not -name "*.pub" -a -iname "id_rsa*")
    if test ! (echo $added_keys | grep -o -e $key)
      ssh-add "$key"
    end
  end
end

# Call the function to run it.
loadsshkeys

আপনি যদি ssh-agentকোনও টার্মিনাল খোলার সময় অটো শুরু করতে চান আপনি এটি করতে টুভিস্টাভি / ফিশ-এসএস-এজেন্ট ব্যবহার করতে পারেন ।

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