32

Would it be possible to run ssh-keygen without human interaction?

I have a shell script that takes care of server deployment from start to finish, but ssh-keygen is the only remaining piece that still requires my input.

Would it be possible to feed the parameters to it? Or is there something similar to debconf-set-selections that could be used for this?

*running Debian

Hayek
  • 2,085

4 Answers4

24

You can do more or less anything with command-line arguments. Is there something particular you want to do which doesn't appear in the man page?

wry@onyx:~$ ssh-keygen -t dsa -N "my passphrase" -C "test key" -f mykey
Generating public/private dsa key pair.
Your identification has been saved in mykey.
Your public key has been saved in mykey.pub.
The key fingerprint is:
2f:17:a4:5d:6f:25:d7:5a:0e:84:be:af:ee:52:8b:42 test key

(the rest snipped for brevity)

crazyscot
  • 377
23

In case of server deployment:

ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N ""

In terms of communication from server installed to git repositories or other servers would be easy.

techraf
  • 4,952
Yogesh Kamat
  • 327
  • 2
  • 2
1

Command that works without interactive input:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -P ""

Explanation:

-t rsa: Specifies the key type as RSA.
-b 4096: Sets the key size to 4096 bits.
-f ~/.ssh/id_rsa: Specifies the output file name and path. The default file name is id_rsa and the directory is ~/.ssh.
-P "": Specifies an empty passphrase.
gndps
  • 151
-2
operacao@ubuntu:~$ ssh-keygen -t dsa