ইতিমধ্যে কী থাকলে এসএসএড-অ্যাড চুপ থাকুন


16

আমি ssh-add /path/to/special_keyএকটি স্ক্রিপ্ট শীর্ষে রাখতে চান । এটি দুর্দান্ত কাজ করে তবে এটি সর্বদা পাসফ্রেজের জন্য অনুরোধ করে। এটি বিস্ময়কর এবং কিছুটা বিরক্তিকর, কারণ ssh-add -lকীটি ইতিমধ্যে যুক্ত করা হয়েছে এমনটি দেখানোর পরেও এটি পাসফ্রেজের জন্য জিজ্ঞাসা করে ।

এটি বলার কোনও উপায় আছে: "এই কীটি যুক্ত করুন এবং ইতিমধ্যে যুক্ত না করা থাকলে পাসফ্রেজটি জিজ্ঞাসা করুন, অন্যথায় কিছু করবেন না"?


অনুরূপ প্রশ্ন superuser.com/q/325662
ড্যারেন কুক

উত্তর:


20

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

প্রথমে আপনার বিশেষ_কির জন্য আঙুলের ছাপটি ধরুন:

ssh-keygen -lf /path/to/special_key  | awk '{print $2}'

আসুন বলি যে এই আঙুলের ছাপটি 6 ডি: 98: এডি: 8 সি: 07: 07: ফে: 57: বিবি: 19: 12: 89: 5 এ: সি 4: বিএফ: 25

তারপরে, আপনার স্ক্রিপ্টের শীর্ষে, ssh-add -lকীটি যুক্ত করার অনুরোধের আগে, কীটি লোড হয়েছে কিনা তা পরীক্ষা করে দেখুন:

ssh-add -l |grep -q 6d:98:ed:8c:07:07:fe:57:bb:19:12:89:5a:c4:bf:25 || ssh-add /path/to/special_key

আপনি যদি চান তবে এই সমস্তগুলি এক লাইনে ভাঁজ করতে পারেন:

ssh-add -l |grep -q `ssh-keygen -lf /path/to/special_key  | awk '{print $2}'` || ssh-add /path/to/special_key

ওয়ান-লাইনার সুন্দরভাবে কাজ করছে, ধন্যবাদ!
ড্যারেন কুক

1
আমি এই সরলিকৃত ওয়ান-লাইনারটিকে কিছুটা বোধগম্য ও পছন্দযোগ্য বলে মনে করি যেহেতু এটি এড়ানো হয় ssh-keygen(সর্বোপরি, আমি কোনও কী তৈরি করতে চাই না), মূল পথটি ব্যবহার করে:ssh-add -l | grep -q 'path/to/key' || ssh-add /path/to/key
ওহরুনুরুস

1
ssh-keygenউত্তরে একটি কী তৈরি হয় না - যেমন ssh-add -lআপনার উদাহরণে আসলে কিছুই যুক্ত হয় না। পতাকাগুলি কমান্ডের আচরণটি পরিবর্তন করে যাতে এটি ঠিক নামের সাথে মেলে না। নোট করুন যে এই সংস্করণগুলি কার্যকরীভাবে পৃথক - যদি পথ ধরে পরীক্ষা করা হয় এবং সেই পথের কীটি পরিবর্তন হয় তবে আপনার সংস্করণটি এটিকে গ্রহণ করবে না। উত্তরের সংস্করণটি বিদ্যমান কীটি কোথায় তা লোড করা হয়েছিল তা নির্ধারণ করে।
রিচলভ

5

শুধু ব্যবহার করে চেক করার সরাসরি কোনও উপায় নেই ssh-addতবে আপনি ssh-keygenচেক করার জন্য কিছু স্ক্রিপ্টিং ব্যবহার করতে পারেন ।

$ if  ssh-add -l | \
    grep -q "$(ssh-keygen -lf /path/to/special_key | awk '{print $2}')"; \
    then echo yes; \
    else echo no; \
  fi

yesউপরেরগুলি তখন ফাইলটি দ্বারা প্রতিনিধিত্ব করা ফিঙ্গারপ্রিন্টের আউটপুটে /path/to/special_keyউপস্থিত থাকলে মুদ্রণ করবে ssh-add -l

উদাহরণ

$ if  ssh-add -l | \
    grep -q "$(ssh-keygen -lf /path/to/special_key | awk '{print $2}')"; \
    then echo yes; \
    else echo no; \
  fi
yes

যেখানে আউটপুট সামগ্রীগুলি ssh-keygen -lf /path/to/special_keyদেখতে এই রকম দেখাচ্ছে:

$ ssh-keygen -lf /path/to/special_key
2048 8a:6a:5a:44:20:c8:3a:da:ab:dd:1c:12:2c:e4:20:0c  dev-servers (RSA)

এবং আমরা মাত্র ২ য় কলামটি নির্বাচন করতে `awk '{মুদ্রণ $ 2}' ব্যবহার করছি, যার মধ্যে আঙুলের ছাপ রয়েছে:

8a:6a:5a:44:20:c8:3a:da:ab:dd:1c:12:2c:e4:20:0c

তথ্যসূত্র


3

আপনার ssh-addস্পষ্টভাবে ব্যবহার করার বিশেষ কারণ থাকতে পারে তবে আপনি যদি কেবল "আমি আমার পাসফ্রেজের জন্য প্রথমবার কীটি ব্যবহার করার অনুরোধ জানাতে চাই তবে তার পরে না" চাইলে ওপেনশের একটি সহজ সমাধান রয়েছে:

AddKeysToAgent yesআপনার .ssh/configফাইল রাখুন ।


ধন্যবাদ। এটি স্পষ্টতই ssh 7.2 এ যুক্ত হয়েছিল (উবুন্টু 18 সংস্করণ 7.6 তে উপস্থিত রয়েছে)।
ড্যারেন কুক

হ্যাঁ, "অ্যাডকিজেটওএজেন্ট আমার ওপেনশ সংস্করণ দ্বারা সমর্থিত নয়" স্পষ্টতই ssh-add ব্যবহার করার একটি ভাল কারণ ;-)
Nate

0

ssh-add -K FILEম্যাক এ আমার জন্য ভাল কাজ করে।
এটি এখনও "পরিচয় যুক্ত হওয়া:" লাইনগুলি দেখায় তবে পাসফ্রেজ জিজ্ঞাসা করে না।

ম্যান পৃষ্ঠা থেকে:

-K পরিচয় যুক্ত করার সময়, প্রতিটি পাসফ্রেজ ব্যবহারকারীর কীচেইনে সংরক্ষণ করা হবে। -D দিয়ে পরিচয় মুছে ফেলার সময় এটি থেকে প্রতিটি পাসফ্রেজ মুছে ফেলা হবে।

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