ssh-keygen - authentication key generation, management and
conversion
ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C
comment]
[-f output_keyfile]
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f
keyfile]
ssh-keygen -i [-f input_keyfile]
ssh-keygen -e [-f input_keyfile]
ssh-keygen -y [-f input_keyfile]
ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
ssh-keygen -l [-f input_keyfile]
ssh-keygen -B [-f input_keyfile]
ssh-keygen -D reader
ssh-keygen -U reader [-f input_keyfile]
ssh-keygen -r hostname [-f input_keyfile] [-g]
ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S
start_point]
ssh-keygen -T output_file -f input_file [-v] [-a num_trials]
[-W
generator]
ssh-keygen generates, manages and converts authentication
keys for
ssh(1). ssh-keygen can create RSA keys for use by SSH protocol version 1
and RSA or DSA keys for use by SSH protocol version 2. The
type of key
to be generated is specified with the -t option.
ssh-keygen is also used to generate groups for use in
Diffie-Hellman
group exchange (DH-GEX). See the MODULI GENERATION section
for details.
Normally each user wishing to use SSH with RSA or DSA authentication runs
this once to create the authentication key in
$HOME/.ssh/identity,
$HOME/.ssh/id_dsa or $HOME/.ssh/id_rsa. Additionally, the
system administrator
may use this to generate host keys, as seen in
/etc/rc.
Normally this program generates the key and asks for a file
in which to
store the private key. The public key is stored in a file
with the same
name but ``.pub'' appended. The program also asks for a
passphrase. The
passphrase may be empty to indicate no passphrase (host keys
must have an
empty passphrase), or it may be a string of arbitrary
length. A
passphrase is similar to a password, except it can be a
phrase with a series
of words, punctuation, numbers, whitespace, or any
string of characters
you want. Good passphrases are 10-30 characters long,
are not simple
sentences or otherwise easily guessable (English prose
has only 1-2
bits of entropy per character, and provides very bad
passphrases), and
contain a mix of upper and lowercase letters, numbers, and
non-alphanumeric
characters. The passphrase can be changed later by
using the -p
option.
There is no way to recover a lost passphrase. If the
passphrase is lost
or forgotten, a new key must be generated and copied to the
corresponding
public key to other machines.
For RSA1 keys, there is also a comment field in the key file
that is only
for convenience to the user to help identify the key. The
comment can
tell what the key is for, or whatever is useful. The comment is initialized
to ``user@host'' when the key is created, but can be
changed using
the -c option.
After a key is generated, instructions below detail where
the keys should
be placed to be activated.
The options are as follows:
-a trials
Specifies the number of primality tests to perform
when screening
DH-GEX candidates using the -T command.
-b bits
Specifies the number of bits in the key to create.
Minimum is
512 bits. Generally, 1024 bits is considered sufficient. The
default is 1024 bits.
-c Requests changing the comment in the private and
public key
files. This operation is only supported for RSA1
keys. The program
will prompt for the file containing the private
keys, for
the passphrase if the key has one, and for the new
comment.
-e This option will read a private or public OpenSSH
key file and
print the key in a `SECSH Public Key File Format' to
stdout.
This option allows exporting keys for use by several
commercial
SSH implementations.
-g Use generic DNS format when printing fingerprint resource records
using the -r command.
-f filename
Specifies the filename of the key file.
-i This option will read an unencrypted private (or
public) key file
in SSH2-compatible format and print an OpenSSH compatible private
(or public) key to stdout. ssh-keygen also reads
the `SECSH
Public Key File Format'. This option allows importing keys from
several commercial SSH implementations.
-l Show fingerprint of specified public key file. Private RSA1 keys
are also supported. For RSA and DSA keys ssh-keygen
tries to
find the matching public key file and prints its
fingerprint.
-p Requests changing the passphrase of a private key
file instead of
creating a new private key. The program will prompt
for the file
containing the private key, for the old passphrase,
and twice for
the new passphrase.
-q Silence ssh-keygen. Used by /etc/rc when creating a
new key.
-y This option will read a private OpenSSH format file
and print an
OpenSSH public key to stdout.
-t type
Specifies the type of the key to create. The possible values are
``rsa1'' for protocol version 1 and ``rsa'' or
``dsa'' for protocol
version 2.
-B Show the bubblebabble digest of specified private or
public key
file.
-C comment
Provides the new comment.
-D reader
Download the RSA public key stored in the smartcard
in reader.
-G output_file
Generate candidate primes for DH-GEX. These primes
must be
screened for safety (using the -T option) before
use.
-M memory
Specify the amount of memory to use (in megabytes)
when generating
candidate moduli for DH-GEX.
-N new_passphrase
Provides the new passphrase.
-P passphrase
Provides the (old) passphrase.
-S start
Specify start point (in hex) when generating candidate moduli for
DH-GEX.
-T output_file
Test DH group exchange candidate primes (generated
using the -G
option) for safety.
-W generator
Specify desired generator when testing candidate
moduli for DHGEX.
-U reader
Upload an existing RSA private key into the smartcard in reader.
-v Verbose mode. Causes ssh-keygen to print debugging
messages
about its progress. This is helpful for debugging
moduli generation.
Multiple -v options increase the verbosity.
The maximum
is 3.
-r hostname
Print the SSHFP fingerprint resource record named
hostname for
the specified public key file.
ssh-keygen may be used to generate groups for the DiffieHellman Group
Exchange (DH-GEX) protocol. Generating these groups is a
two-step process:
first, candidate primes are generated using a fast,
but memory intensive
process. These candidate primes are then tested for
suitability
(a CPU-intensive process).
Generation of primes is performed using the -G option. The
desired
length of the primes may be specified by the -b option. For
example:
ssh-keygen -G moduli-2048.candidates -b 2048
By default, the search for primes begins at a random point
in the desired
length range. This may be overridden using the -S option,
which specifies
a different start point (in hex).
Once a set of candidates have been generated, they must be
tested for
suitability. This may be performed using the -T option. In
this mode
ssh-keygen will read candidates from standard input (or a
file specified
using the -f option). For example:
ssh-keygen -T moduli-2048 -f moduli-2048.candidates
By default, each candidate will be subjected to 100 primality tests.
This may be overridden using the -a option. The DH generator value will
be chosen automatically for the prime under consideration.
If a specific
generator is desired, it may be requested using the -W option. Valid
generator values are 2, 3 and 5.
Screened DH groups may be installed in /etc/moduli. It is
important that
this file contains moduli of a range of bit lengths and that
both ends of
a connection share common moduli.
$HOME/.ssh/identity
Contains the protocol version 1 RSA authentication
identity of
the user. This file should not be readable by anyone but the user.
It is possible to specify a passphrase when
generating the
key; that passphrase will be used to encrypt the
private part of
this file using 3DES. This file is not automatically accessed by
ssh-keygen but it is offered as the default file for
the private
key. ssh(1) will read this file when a login attempt is made.
$HOME/.ssh/identity.pub
Contains the protocol version 1 RSA public key for
authentication.
The contents of this file should be added to
$HOME/.ssh/authorized_keys on all machines where the
user wishes
to log in using RSA authentication. There is no
need to keep the
contents of this file secret.
$HOME/.ssh/id_dsa
Contains the protocol version 2 DSA authentication
identity of
the user. This file should not be readable by anyone but the user.
It is possible to specify a passphrase when
generating the
key; that passphrase will be used to encrypt the
private part of
this file using 3DES. This file is not automatically accessed by
ssh-keygen but it is offered as the default file for
the private
key. ssh(1) will read this file when a login attempt is made.
$HOME/.ssh/id_dsa.pub
Contains the protocol version 2 DSA public key for
authentication.
The contents of this file should be added to
$HOME/.ssh/authorized_keys on all machines where the
user wishes
to log in using public key authentication. There is
no need to
keep the contents of this file secret.
$HOME/.ssh/id_rsa
Contains the protocol version 2 RSA authentication
identity of
the user. This file should not be readable by anyone but the user.
It is possible to specify a passphrase when
generating the
key; that passphrase will be used to encrypt the
private part of
this file using 3DES. This file is not automatically accessed by
ssh-keygen but it is offered as the default file for
the private
key. ssh(1) will read this file when a login attempt is made.
$HOME/.ssh/id_rsa.pub
Contains the protocol version 2 RSA public key for
authentication.
The contents of this file should be added to
$HOME/.ssh/authorized_keys on all machines where the
user wishes
to log in using public key authentication. There is
no need to
keep the contents of this file secret.
/etc/moduli
Contains Diffie-Hellman groups used for DH-GEX. The
file format
is described in moduli(5).
ssh(1), ssh-add(1), ssh-agent(1), moduli(5), sshd(8)
J. Galbraith and R. Thayer, SECSH Public Key File Format,
draft-ietfsecsh-publickeyfile-01.txt,
March 2001, work in progress material.
OpenSSH is a derivative of the original and free ssh 1.2.12
release by
Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels
Provos, Theo
de Raadt and Dug Song removed many bugs, re-added newer features and
created OpenSSH. Markus Friedl contributed the support for
SSH protocol
versions 1.5 and 2.0.
OpenBSD 3.6 September 25, 1999
[ Back ] |