কীভাবে ssh- এজেন্ট কীভাবে চাহিদা অনুযায়ী কী যুক্ত করবেন?


50

আমি ssh-এজেন্ট চালাতে চাই (সর্বাধিক আজীবন বিকল্প সহ), তবে প্রারম্ভকালে কোনও কী যুক্ত না করে পরিবর্তে চাহিদা অনুযায়ী যুক্ত করুন।

প্রথমবারের মতো আমি যখন কোনও সার্ভারে লগইন করলাম তখন এটি পাসফ্রেজের জন্য জিজ্ঞাসা করা উচিত, পরের বার (যদি আমি এক ঘন্টার বেশি অপেক্ষা না করি) এটি পরিষ্কারভাবে সংযোগ করা উচিত:

ssh server1
Enter passphrase for key '/home/vi/.ssh/id_dsa':
server1> ...

ssh server2
server2> # no passphrase this time

# wait for lifetime

ssh server2
Enter passphrase for key '/home/vi/.ssh/id_dsa':

আমি প্রত্যেকবার 'ssh-add' চালানোর বিষয়ে ম্যানুয়ালি মনে রাখতে চাই না। (যেমন কেবল ssh এর জন্য পাসফ্রেজ প্রবেশ করানো হয়েছে এবং "ওহ, এটি মনে নেই, পুনরায় টাইপ করা দরকার")।

ব্যবহারকারী পাসফ্রেজ সরবরাহ করে কীভাবে ssh-এজেন্টে স্বয়ংক্রিয়ভাবে কী যুক্ত করতে ssh কনফিগার করবেন?


উত্তর:


56

ssh প্রথম ব্যবহারে এজেন্টের একটি চাবি যুক্ত সমর্থন করে (সংস্করণ 7.2 থেকে)। আপনি নিম্নলিখিতটি এতে রেখে সেই বৈশিষ্ট্যটি সক্ষম করতে পারেন ~/.ssh/config:

AddKeysToAgent yes

গিটের মতো ডেরাইভেটিভ সরঞ্জামগুলি ব্যবহার করার সময় এটিও কাজ করে।

থেকে 7.2 পরিবর্তণের :

  • ssh (1): একটি অ্যাডকিজেটওজেন্ট ক্লায়েন্ট বিকল্প যুক্ত করুন যা 'হ্যাঁ', 'না', 'জিজ্ঞাসা', বা 'নিশ্চিত', এবং 'না' তে ডিফল্ট সেট করা যেতে পারে। সক্ষম করা থাকলে, প্রাইভেট কীটি যা প্রমাণীকরণের সময় ব্যবহৃত হয় তা চলমান থাকলে ssh-এজেন্টে যুক্ত করা হবে ('নিশ্চিতকরণ' তে সেট করা থাকলে নিশ্চিতকরণ সক্ষম করা থাকলে)।

এটি চালানোর জন্য একটি ssh- এজেন্ট প্রয়োজন। এটি শুরু করার ভাল উপায়ের জন্য স্ট্যাকওভারফ্লো.com /a/ 24347344 / 4573065 + এর মন্তব্যগুলি দেখুন।
এসটি-ডিডিটি

18

আপনি প্রতারণা করতে এবং alias ssh='ssh-add -l || ssh-add && ssh'আপনার .bashrc/ এর মতো কিছু রাখতে পারেন .profile। এটি প্রথম চালায় ssh-add -l, যা 0 (এজেন্টের কীগুলি রয়েছে), 1 (কোনও কী নেই) বা 2 (কোনও এজেন্ট চলছে না) ফিরে আসতে পারে; যদি এটি 0 ফেরত দেয় তবে sshচলবে; যদি 1, ssh-addচলবে এবং তারপরে ssh; যদি 2, ssh-addব্যর্থ হবে এবং sshচালানো হবে না। কোনও এজেন্ট চলমান না থাকলেও যদি আপনি দৌড়াতে চান তবে এর &&সাথে প্রতিস্থাপন করুন ।;ssh


3
পরবর্তী ssh কমান্ড এটি ব্যবহার না করে এমনকি এটি কীতে পাসফ্রেজের অনুরোধ করবে।
vi।

@Vi। সত্য, তবে বিরল হ'ল আদেশগুলি যা সেগুলি ব্যবহার করে না (যদি না আপনি কোনও সার্ভারের সাথে সংযোগ স্থাপন করেন যা কীবোর্ড-ইন্টারেক্টিভ ব্যবহার করে)। আপনার এজেন্টের পরে যখনই প্রয়োজন হবে তবে কীটি এজেন্টের মধ্যে থাকবে। এছাড়াও, উপসর্গ ভাগ্যক্রমে (বা দুর্ভাগ্যক্রমে) ssh এর ব্যাকএন্ডের ব্যবহারগুলি পরিবর্তন করে না (যেমন গিট বা আরএসসিএনসি সহ)।
কোভেনস্কি

2
(এসএসএস ক্লায়েন্টের জন্য অটো-কল-এস-এস-অ্যাড প্যাচ লেখার বিষয়ে চিন্তাভাবনা)
vi।

এই উত্তরটি উপর ভিত্তি করে আপনাকে একটি নির্দিষ্ট হোস্টের জন্য একটি alias লেখা তৈরি করতে পারেন: alias ssh-hostname='(ssh-add -l | grep hostname > /dev/null) || ssh-add ~/.ssh/id_rsa_hostname && ssh -p 12345 username@hostname'। আপনি এটি আপনার সমস্ত এসএস কীগুলির জন্য একটি লুপে রেখেছিলেন এবং এলিয়াসগুলি তৈরি করতে পারেন। একটি নোংরা হ্যাক, কিন্তু এটি কাজ করে।
dset0x

5

অটো-কল-এস-এস-অ্যাড .bashrcএসএসএস দ্বারা সমর্থন না করা অবধি, কোভেনস্কির প্রস্তাবের ভিত্তিতে আমি আমার এটিকে যুক্ত করেছি :

ssh-add -l >/dev/null || alias ssh='ssh-add -l >/dev/null || ssh-add && unalias ssh; ssh'

পরিচয় যুক্ত না করা হলেই উপনামটি তৈরি করা হয় এবং একবারে চালানোর পরে ওরফে নিজেকে নষ্ট করে দেয়।

এভাবে পরিচয় যুক্ত হওয়ার পরে নিয়মিত ssh কমান্ড ব্যবহার করা হবে।


আমার ক্ষেত্রে কাজ করবে না কারণ এসএসএড-এর কারণে টাইমআউটও কনফিগার করা আছে, তবে ধারণাটি যথেষ্ট ভাল।
vi।

@Vi। একটি সময়সীমা এটি কীভাবে প্রভাবিত করবে? এটা আমার জন্য দুর্দান্ত কাজ বলে মনে হচ্ছে।
ল্যানরাট

1
@ অ্যালানট, এসএস-এজেন্টে কী উপস্থিত রয়েছে কিনা এবং এটি উপস্থিতির উপর নির্ভর করে উপন্যাসটি কনফিগার করে কিনা এটি পরীক্ষা করে। কিন্তু সময়সীমা শেষ হওয়ার কারণে ( ssh-add -t ...) এসএসএইচ-এজেন্টে যুক্ত কীটি হঠাৎ করে চলে যেতে পারে, এবং কীটি এখনও স্মৃতিতে নেই বলেই উপনামটি থাকবে।
vi।

0

আমি নিম্নলিখিত শেল ফাংশনটি ব্যবহার করছি:

ssh() {
    local possible_keys=($(/usr/bin/env ssh -G $@ | grep '^identityfile' \
                           | cut -d " " -f 2- | sed -e "s|^~|$HOME|"))
    for k in $possible_keys; do
        if [[ -f $k ]]; then
            local fingerprint=$(ssh-keygen -lf $k)
            ssh-add -l | grep -q "$fingerprint" || ssh-add $k
        fi
    done
    /usr/bin/env ssh $@
    return $?
}

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

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