स्वचालित ssh-keygen -t rsa तो यह पासफ़्रेज़ के लिए नहीं पूछता है


164

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

जवाबों:


230

पासफ़्रेज़ के लिए संकेत दिए बिना SSH कीपेयर बनाने के लिए आप निम्नलिखित कार्य कर सकते हैं:

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

2
मेरे लिए काम किया! गिथब ने हमेशा एन-एन विकल्प के बिना पासवर्ड मांगा, जब प्रोम के बाद एक पासवॉटर में प्रवेश नहीं कर रहा था, तो "पासफ़्रेज़ दर्ज करें (कोई पासफ़्रेज़ के लिए खाली नहीं)"
हॉलर्वेगर

4
आरएचईएल 6 पर, मुझे यह त्रुटि मिली: " ssh-keygen: option requires an argument -- N" :(
एंथनी ओ।

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

1
ऐसा प्रतीत होता है कि स्थान विकल्प को अलग करता है और रिक्त पासफ़्रेज़ -N ''महत्वपूर्ण है। जब मैंने इसमें स्थान जोड़ा तो यह सफल हो गया!
GH05T

33

यदि आपको विंडो उपयोग में PowerShell से ऐसा करने की आवश्यकता है:

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

ध्यान दें कि आपको यह सुनिश्चित करना होगा कि git bin डायरेक्टरी आपके रास्ते में है:

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

$env:path += ";$sshPath"

तो PoshGit में इसका उपयोग करने के लिए यह सिर्फ है:

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

इसके लिए धन्यवाद। BTW, git\usr\binसही dir है।
मेजकिनटोर

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

1
मेरे लिए @AaronJensen वही। तय करने के लिए धन्यवाद। मैंने इस्तेमाल किया'""'
ट्रेवर सुलिवन

@AaronJensen धन्यवाद! '""'एकमात्र संस्करण है जो मेरे लिए काम करता है।
सोमनियम

@ डैनियल-लिटिल मुझे एक मॉड्यूल पॉशगिट नहीं मिल रहा है, केवल एक ही जो मुझे इस नाम के साथ मिला है वह पॉश-गिट है जिसमें यह cmdlet नहीं लगता है। इस पर कोई और जानकारी?
जिम

18
$ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''

यह उत्तर मूल रूप से
शामून

@ o @ शमून द्वारा उत्तर स्पष्ट रूप से निजी कुंजी के लिए पथ निर्दिष्ट नहीं करता है।
GMaster

11

2 का उत्तर देने के लिए एक सुधार

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

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

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

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

9

व्हाट अबाउट :

ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N ''

जैसा कि कहा गया है man ssh-keygen:

SYNOPSIS
     ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1] [-N new_passphrase] [-C comment] [-f output_keyfile]
(...)
      -q      Silence ssh-keygen.

(उस के साथ है openssh-clientडेबियन 9.4 खिंचाव में पैकेज: OpenSSH_6.7p1 Debian-5+deb8u4)


मेरे लिए काम किया धन्यवाद। (OpenSSH_7.6p1 Ubuntu-4ubuntu0.2)
डेविड वेबस्टर

0

मुझे bash स्क्रिप्ट को ssh-keygen कमांड और अंतिम उत्तर में स्वचालित करने की आवश्यकता है जो मेरे लिए अच्छा काम करता है:

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

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


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.