स्वचालित रूप से बैश स्क्रिप्ट जनरेट करने के लिए “एंटर” कीपर्स को एसएच कीज़ जनरेट करना


101

मैं स्क्रिप्ट बनाना चाहूंगा, जो बस चलती है ssh-keygen -t rsa। लेकिन इसमें 3 बार प्रवेश कैसे करें?

जवाबों:


217

Try:

ssh-keygen -t rsa -N "" -f my.key

-N "" tells it to use an empty passphrase (the same as two of the enters in an interactive script)

-f my.key tells it to store the key into my.key (change as you see fit).

The whole thing runs without you needing to supply any enter keys :)

To send enters to an interactive script:

echo -e "\n\n\n" | ssh-keygen -t rsa

4
It is correct anwser, but i still would like to know how to press enter more then one time - in another script.
Sławosz

3
Sure thing - updated the answer to include how to send newlines to a script.
Rudu

2
echo -e "\n\n\n" | sshkeygen -t rsa is not working for me, can you try it yourself? It pass only first enter. But on other, simple script it works.
Sławosz

1
I tested it before I posted it - it works fine, although it looks like the dash from ssh-keygen got dropped - did you add that back in? {edited} Also - you can't run the script more than once - it changes the questions to confirm you want to overwrite the existing _rsa keyfile (so a y or n needs to be supplied)
Rudu

13
I'd recommend using yes "" instead of echo -e "\n\n\n" (yes outputs whatever argument is given [or "y" by default] in infinity – perfect for these situations where one just want to provide a "yes" answer to whatever a program might prompt for). yes is shorter, and should ssh-keygen ever add a question, that will automatically be answered in too. :)
zrajm


1

Agree with Michel Marro except that it needs some more: If the file already exists, it will still be interactive asking if it has to overwrite it.

Use the answer of this question.

yes y | ssh-keygen -q -t rsa -N '' >/dev/null

The redirection to null is necessary to silence the overwrite message.


0
echo -e "\n"|ssh-keygen -t rsa -N ""

Eh? This actually has fewer newlines than one of the answers you claim don't work (and that's on the subset of platforms where echo -e emits something other than -e at all, which is not everywhere ssh-keygen is available).
Charles Duffy

...to be clear, I make production use of ssh-keygen -N '' as part of an automated install procedure, and it doesn't read stdin at all, so there's no need for the echo (any echo variant) piped into it. (Granted, I believe stdin is connected to /dev/null in my production use case; there could well be different behavior when it's attached to a TTY, but the better answer is </dev/null rather than echo ... |)
Charles Duffy

1
It prompts me for a filename: $ ssh-keygen -t rsa -N '' Generating public/private rsa key pair. Enter file in which to save the key (/home/dlyons/.ssh/id_rsa):
Mannix

0

It is recommended to use ed25519 for security and performance.

yes "y" | ssh-keygen -o -a 100 -t ed25519 -C "Bla Bla" -f /mypath/bla -N ""

here

-o OpenSSH key format instead of older PEM (needs OpenSSH 6.5+)

-a Number of primality test while screening DH-GEX candidates

-t Type of key (ed25519, RSA, DSA etc.)

-f /mypath/bla The output file path and name

-N "" Use empty passphase

and yes "y" for no interaction.

It will generate two files

/mypath/bla
/mypath/bla.pub

where the bla file is private and bla.pub is public.

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