পাসফ্রেজ ছাড়াই অটোমেটেড এসএস-কীজেন, কীভাবে?


86

আমি একটি স্বয়ংক্রিয় স্ক্রিপ্ট তৈরি করতে চাই ssh-keygenযা কিছু পাব / ব্যক্তিগত কীপেইসগুলি কল করে এবং তৈরি করে যা আমি পরে ব্যবহার করব। নীতিগতভাবে ...
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
... দিয়ে সবকিছু ঠিকঠাক কাজ করে তা ছাড়া এটি আমাকে পাসফ্রেজের জন্য জিজ্ঞাসা করে যা কীগুলি এনক্রিপ্ট করবে। এই মেক-এট উপস্থিত - স্বয়ংক্রিয়করণ কঠিন।

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

এই সমস্যার একটি (সেরা) সমাধান কী?

-qবিকল্প যা কল্পনানুসারে মানে "শান্ত / নীরব" এখনও পাসফ্রেজ মিথষ্ক্রিয়া এড়াতে নেই। এছাড়াও আমি এর মতো কিছু পাই না
ssh-keygen ...... -q --no-passphrase

অনুপস্থিত দয়া করে "অনুপস্থিত পাসফ্রেজ" এর পক্ষের পক্ষে এবং প্রচার করতে শুরু করবেন না, আমি সে সম্পর্কে অবগত। ইন্টারেক্টিভ আকারে (স্ক্রিপ্ট হিসাবে নয়) ব্যবহারকারী কেবলমাত্র [ENTER] দুবার আঘাত করতে পারেন এবং কীটি সরলখরচি হিসাবে সংরক্ষণ করা হবে। আমি এই জাতীয় স্ক্রিপ্টে এটি অর্জন করতে চাই:

#! / বিন / ব্যাশ

command1
command2
Var = $ (command3)

# এটি স্ক্রিপ্টটি থামিয়ে পাসওয়ার্ড চাইবে না
ssh-kegen -b 2048 -t rsa -f / tmp / sshkey -q

উত্তর:


105

এটি পাসফ্রেজ প্রম্পটটি উপস্থিত হতে বাধা দেবে এবং কী-জোড়টিকে সরলরেখায় সংরক্ষণ করার জন্য সেট করবে (যা অবশ্যই এতে সমস্ত অসুবিধা এবং ঝুঁকি বহন করে):

ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q -N ""

3
এইটা কাজ করে. /tmp/sshkeyইতিমধ্যে বিদ্যমান ক্ষেত্রে একটি ওভাররাইট প্রম্পট পায়, যদিও। এটিকে স্ট্রিনে পুনঃনির্দেশকরণ / ক্লোজিংয়ের মাধ্যমে প্রতিরোধ করা যেতে পারে - যেমন যোগ করার মাধ্যমে 0>&-
ম্যাক্সচলেপজিগ

34

আপনি যা চান তা করার সহজ উপায়টি হ'ল উদাহরণ (ডিফল্ট ফাইল নাম ব্যবহার করে)

    cat /dev/zero | ssh-keygen -q -N ""

তাহলে ~/.ssh/id_rsaফাইল আগে থেকেই আছে, কমান্ড কিছু পরিবর্তন ছাড়া বন্ধ হয়ে যাবে।

যদি তা না হয় তবে আপনি সেই ফাইল নামটিতে একটি নতুন কী পান

যেভাবেই হোক, আপনি কোনও কিছুর উপরে ওভাররাইট করেননি, এবং আপনি জানেন যে আপনার কাছে কী আছে।


নিশ্চিত হয়েছে: লুবন্তু 14.04.2
ব্যবহারকারী 77115

আপনি যদি সত্যিই এটি শান্ত চান, আউটপুটটি / dev / নালায় পাইপ করুন:cat /dev/zero | ssh-keygen -q -N "" > /dev/null
ক্রিস গ্রেগ

উপর (স্বীকৃতিপ্রসূত প্রাচীন) SLES 11 উপরের কমান্ডটি একটি কী তৈরি করতে ব্যর্থ। yes "" | ssh-keygen -N "" >&- 2>&-তবে ঠিক কাজ করে এবং কিছু আউটপুট দেয় না (কীফাইল ইতিমধ্যে উপস্থিত রয়েছে কিনা), এবং পূর্ববর্তী বিদ্যমান কীফিলটিকে ওভাররাইট করে না।
zrajm

উবুন্টু বিশ্বাসযোগ্য (14.04)
বিনিতা ভারতী

2
কেন আপনি বিড়াল / দেব / শূন্য?
maxschlepzig

9

এটি আমার পক্ষে কাজ করেছে:

ssh-keygen -t rsa -f /home/oracle/.ssh/id_rsa -q -P ""

-Pপাসফ্রেজ বিকল্প, এবং ""খালি পাসফ্রেজ হয়।


কী_সেভ_প্রাইভেট: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই
দিমিত্রি কোপ্রিয়া

5
-P <passphrase>বিকল্প (বয়সী) পাসফ্রেজ প্রদান করা হয়। linux.die.net/man/1/ssh-keygen
জিয়ানফ্র্যাঙ্কো পি।

5

আপনার জন্য "এন্টার" প্রেরণের জন্য আপনি প্রত্যাশা ব্যবহার করতে পারেন

cat test.sh
#!/bin/bash
set -x
XYZ=$(expect -c "
spawn ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
expect \"Enter passphrase (empty for no passphrase):\"
send \"\r\"
expect \"Enter same passphrase again:\"
send \"\r\"
")

তবে সচেতন থাকুন যে ফাইল / tmp / sshkey ইতিমধ্যে উপস্থিত থাকলে এটি ব্যর্থ হবে কারণ কমান্ডের আউটপুট ভিন্ন হবে be


1
অবদানের জন্য আপনাকে ধন্যবাদ। প্রত্যাশা একই ধরণের সমস্যার জন্য আরও বহুমুখী বলে মনে হচ্ছে .... ভাল যেখানে স্ক্রিপ্টিং এবং ব্যবহারকারীর-মিথস্ক্রিয়া বিরোধী হবে। আমি / tmp / sshkey ইতিমধ্যে বিদ্যমান সম্ভাব্য সংঘাত সম্পর্কে সচেতন এবং আপনার কমান্ডটি ব্যবহার করার আগে এটি পরীক্ষা করে দেখব।
মানবতাঅ্যান্ডপিস

2

আমি ssh-keygen এর আগে একটি সাধারণ প্রতিধ্বনি করেছি। সুতরাংsu - <user> -c "echo |ssh-keygen -t rsa"

এটি রেডহাট 6 এ পরীক্ষা করা হয়েছিল


আমি মনে করি না এটি এই চারপাশের সেরা উত্তর, তবে আমার মনে হয়, ছেলেরা হ্রাস করার কোনও কারণ নেই।
cubspl42

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