2012-05-26 6 views
118

के लिए नहीं पूछता है, मुझे एक पासवर्ड के साथ ssh-keygen -t rsa स्वचालित करने की आवश्यकता है यानी प्रॉम्प्ट पर दर्ज करें। मैं इसे शैल स्क्रिप्ट से कैसे कर सकता हूं?स्वचालित ssh-keygen -t rsa तो यह पासफ्रेज़

धन्यवाद

उत्तर

175

किसी पासफ़्रेज़ आप निम्न कर सकते के लिए संकेत दिया जा रहा है बिना एक SSH कुंजी युग्म को उत्पन्न करने के लिए: आप विंडोज में PowerShell से यह करने के लिए की जरूरत है

$ ssh-keygen -f id_rsa -t rsa -N '' 
+2

मेरे लिए काम किया! जीथब ने हमेशा एन-विकल्प के बिना पासवर्ड मांगा, भले ही पासफर्ट दर्ज करें (पासफ्रेज के लिए खाली) " – Hollerweger

+3

आरएचईएल 6 पर, मुझे यह त्रुटि मिली:" ssh-keygen: विकल्प को एक तर्क की आवश्यकता है - एन' ":( –

+1

ठीक है क्योंकि यह इसके सामने 'dzdo' कमांड का इस्तेमाल करता था, इसलिए मुझे लिखना पड़ा:' dzdo -i -u target_user ssh-keygen -f id_rsa -t rsa -N" '' " –

15

का उपयोग करें:

ssh-keygen -f $Name -t rsa -N "''" 

नोट आपको यह भी सुनिश्चित करना होगा कि गिट बिन निर्देशिका आपके पथ में है:

$sshPath = "<path>\git\bin\" 

$env:path += ";$sshPath" 

फिर PoshGit में इसका इस्तेमाल करने की यह सिर्फ है:

Add-SshKey "<path>\.shh\KeyFilename" 
+0

इसके लिए धन्यवाद। बीटीडब्लू, 'गिट \ usr \ bin' सही डीआईआर है। – majkinetor

+1

यह मेरे लिए काम नहीं करता है। मुझे एक त्रुटि मिलती है" सेविंग की "माईकी" असफल: पासफ्रेज बहुत छोटा (न्यूनतम चार वर्ण) "मुझे डबल/सिंगल कोट्स को स्विच करना पड़ा, उदाहरण के लिए 'ssh-keygen -f $ name -t rsq -N'" "' –

+0

@AaronJensen मेरे लिए भी। फिक्स के लिए धन्यवाद। मैंने' '' ' ' –

11

बस एक सुधार 2 ... मैं अपने राजभाषा और RHEL सिस्टम पर पता चला जवाब देने के लिए फ़ाइल नाम id_rsa नहीं id.rsa होना चाहिए।

तो एक राजभाषा या RHEL सिस्टम पर कमांड यह होगी:

$ ssh-keygen -f id_rsa -t rsa -N '' 
+2

जहां तक ​​मुझे लगता है कि' id_rsa' एक आरएसए कुंजी के लिए डिफ़ॉल्ट फ़ाइल नाम है, इसलिए यदि आप डिफ़ॉल्ट पर चिपकना चाहते हैं, तो आप '-f' विकल्प का स्पष्ट रूप से उपयोग करने के लिए मजबूर नहीं किया गया है। – danidemi

+3

@danidemi जबकि आप सही हैं कि यह डिफ़ॉल्ट है, '-f' विकल्प निर्दिष्ट करने का एक कारण यह है कि आप इसे एक स्क्रिप्ट में निष्पादित कर सकते हैं। आप बाद के प्रॉम्प्ट को अक्षम करने के लिए डिफ़ॉल्ट की पुष्टि कर सकते हैं। –

0

मैं एक bash लिपि में ssh-keygen कमान और अंतिम जवाब जो करने के लिए अच्छी तरह से काम करता है को स्वचालित करने की जरूरत मुझे:

echo -e "\n" | ssh-keygen -N "" &> /dev/null 

-e साथ गूंज आदेश के रूप में एक कुंजी दर्ज की व्याख्या "\ n", लेकिन पासफ़्रेज़ से काम नहीं करते। फिर विकल्प -एन "" (खाली पासफ्रेज) का उपयोग कर पासवर्ड खाली हो जाएगा और कुछ भी नहीं मांगेगा। &>/dev/null 'stdout' और 'stderr' को/dev/null पर भेज देगा ताकि डिस्प्ले के माध्यम से कुछ भी मुद्रित न हो।

संबंधित मुद्दे