I would like to create script, which simply runs ssh-keygen -t rsa. But how to pass to it 3 times enter?
5 Answers
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
11 Comments
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)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. :)a version with passphrase is:
$ ssh-keygen -t rsa -b 4096 -C "comment" -P "examplePassphrase" -f "desired pathAndName" -q
- the -q is for silent
Source is http://linux.die.net/man/1/ssh-keygen
2 Comments
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.
Comments
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.
Comments
echo -e "\n"|ssh-keygen -t rsa -N ""
3 Comments
echo -e emits something other than -e at all, which is not everywhere ssh-keygen is available).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 ... |)$ ssh-keygen -t rsa -N '' Generating public/private rsa key pair. Enter file in which to save the key (/home/dlyons/.ssh/id_rsa):