1 .\" $OpenBSD: ssh-keygen.1,v 1.84 2010/02/26 20:29:54 djm Exp $
5 .\" Author: Tatu Ylonen <ylo@cs.hut.fi>
6 .\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
7 .\" All rights reserved
9 .\" As far as I am concerned, the code I have written for this software
10 .\" can be used freely for any purpose. Any derived versions of this
11 .\" software must be clearly marked as such, and if the derived work is
12 .\" incompatible with the protocol description in the RFC file, it must be
13 .\" called by a name other than "ssh" or "Secure Shell".
16 .\" Copyright (c) 1999,2000 Markus Friedl. All rights reserved.
17 .\" Copyright (c) 1999 Aaron Campbell. All rights reserved.
18 .\" Copyright (c) 1999 Theo de Raadt. All rights reserved.
20 .\" Redistribution and use in source and binary forms, with or without
21 .\" modification, are permitted provided that the following conditions
23 .\" 1. Redistributions of source code must retain the above copyright
24 .\" notice, this list of conditions and the following disclaimer.
25 .\" 2. Redistributions in binary form must reproduce the above copyright
26 .\" notice, this list of conditions and the following disclaimer in the
27 .\" documentation and/or other materials provided with the distribution.
29 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
30 .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
31 .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
32 .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
33 .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
34 .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35 .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36 .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
38 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 .Dd $Mdocdate: February 26 2010 $
45 .Nd authentication key generation, management and conversion
52 .Op Fl N Ar new_passphrase
54 .Op Fl f Ar output_keyfile
58 .Op Fl P Ar old_passphrase
59 .Op Fl N Ar new_passphrase
63 .Op Fl f Ar input_keyfile
66 .Op Fl f Ar input_keyfile
69 .Op Fl f Ar input_keyfile
72 .Op Fl P Ar passphrase
77 .Op Fl f Ar input_keyfile
80 .Op Fl f Ar input_keyfile
85 .Op Fl f Ar known_hosts_file
89 .Op Fl f Ar known_hosts_file
92 .Op Fl f Ar known_hosts_file
95 .Op Fl f Ar input_keyfile
102 .Op Fl S Ar start_point
107 .Op Fl a Ar num_trials
108 .Op Fl W Ar generator
111 .Fl I Ar certificate_identity
113 .Op Fl n Ar principals
114 .Op Fl O Ar constraint
115 .Op Fl V Ar validity_interval
119 generates, manages and converts authentication keys for
122 can create RSA keys for use by SSH protocol version 1 and RSA or DSA
123 keys for use by SSH protocol version 2.
124 The type of key to be generated is specified with the
127 If invoked without any arguments,
129 will generate an RSA key for use in SSH protocol 2 connections.
132 is also used to generate groups for use in Diffie-Hellman group
135 .Sx MODULI GENERATION
138 Normally each user wishing to use SSH
139 with RSA or DSA authentication runs this once to create the authentication
141 .Pa ~/.ssh/identity ,
145 Additionally, the system administrator may use this to generate host keys,
149 Normally this program generates the key and asks for a file in which
150 to store the private key.
151 The public key is stored in a file with the same name but
154 The program also asks for a passphrase.
155 The passphrase may be empty to indicate no passphrase
156 (host keys must have an empty passphrase), or it may be a string of
158 A passphrase is similar to a password, except it can be a phrase with a
159 series of words, punctuation, numbers, whitespace, or any string of
161 Good passphrases are 10-30 characters long, are
162 not simple sentences or otherwise easily guessable (English
163 prose has only 1-2 bits of entropy per character, and provides very bad
164 passphrases), and contain a mix of upper and lowercase letters,
165 numbers, and non-alphanumeric characters.
166 The passphrase can be changed later by using the
170 There is no way to recover a lost passphrase.
172 lost or forgotten, a new key must be generated and copied to the
173 corresponding public key to other machines.
176 there is also a comment field in the key file that is only for
177 convenience to the user to help identify the key.
178 The comment can tell what the key is for, or whatever is useful.
179 The comment is initialized to
181 when the key is created, but can be changed using the
185 After a key is generated, instructions below detail where the keys
186 should be placed to be activated.
188 The options are as follows:
191 Specifies the number of primality tests to perform when screening DH-GEX
196 Show the bubblebabble digest of specified private or public key file.
198 Specifies the number of bits in the key to create.
199 For RSA keys, the minimum size is 768 bits and the default is 2048 bits.
200 Generally, 2048 bits is considered sufficient.
201 DSA keys must be exactly 1024 bits as specified by FIPS 186-2.
203 Provides a new comment.
205 Requests changing the comment in the private and public key files.
206 This operation is only supported for RSA1 keys.
207 The program will prompt for the file containing the private keys, for
208 the passphrase if the key has one, and for the new comment.
210 Download the RSA public keys provided by the PKCS#11 shared library
213 This option will read a private or public OpenSSH key file and
215 RFC 4716 SSH Public Key File Format
217 This option allows exporting keys for use by several commercial
220 Search for the specified
224 file, listing any occurrences found.
225 This option is useful to find hashed host names or addresses and may also be
226 used in conjunction with the
228 option to print found keys in a hashed format.
230 Specifies the filename of the key file.
231 .It Fl G Ar output_file
232 Generate candidate primes for DH-GEX.
233 These primes must be screened for
238 Use generic DNS format when printing fingerprint resource records using the
245 This replaces all hostnames and addresses with hashed representations
246 within the specified file; the original content is moved to a file with
248 These hashes may be used normally by
252 but they do not reveal identifying information should the file's contents
254 This option will not modify existing hashed hostnames and is therefore safe
255 to use on files that mix hashed and non-hashed names.
257 When signing a key, create a host certificate instead of a user
263 Specify the key identity when signing a public key.
268 This option will read an unencrypted private (or public) key file
269 in SSH2-compatible format and print an OpenSSH compatible private
270 (or public) key to stdout.
273 RFC 4716 SSH Public Key File Format.
274 This option allows importing keys from several commercial
277 Show fingerprint of specified public key file.
278 Private RSA1 keys are also supported.
281 tries to find the matching public key file and prints its fingerprint.
284 an ASCII art representation of the key is supplied with the fingerprint.
286 Specify the amount of memory to use (in megabytes) when generating
287 candidate moduli for DH-GEX.
288 .It Fl N Ar new_passphrase
289 Provides the new passphrase.
290 .It Fl n Ar principals
291 Specify one or more principals (user or host names) to be included in
292 a certificate when signing a key.
293 Multiple principals may be specified, separated by commas.
297 .It Fl O Ar constraint
298 Specify a certificate constraint when signing a key.
299 This option may be specified multiple times.
303 The constraints that are valid for user certificates are:
305 .It Ic no-x11-forwarding
306 Disable X11 forwarding. (permitted by default)
307 .It Ic no-agent-forwarding
310 forwarding. (permitted by default)
311 .It Ic no-port-forwarding
312 Disable port forwarding. (permitted by default)
314 Disable PTY allocation. (permitted by default)
320 (permitted by default)
322 Clear all enabled permissions.
323 This is useful for clearing the default set of permissions so permissions may
324 be added individually.
325 .It Ic permit-x11-forwarding
326 Allows X11 forwarding.
327 .It Ic permit-port-forwarding
328 Allows port forwarding.
330 Allows PTY allocation.
331 .It Ic permit-user-rc
336 .It Ic force-command=command
337 Forces the execution of
339 instead of any shell or command specified by the user when
340 the certificate is used for authentication.
341 .It Ic source-address=address_list
342 Restrict the source addresses from which the certificate is considered valid
346 is a comma-separated list of one or more address/netmask pairs in CIDR
350 At present, no constraints are valid for host keys.
351 .It Fl P Ar passphrase
352 Provides the (old) passphrase.
354 Requests changing the passphrase of a private key file instead of
355 creating a new private key.
356 The program will prompt for the file
357 containing the private key, for the old passphrase, and twice for the
364 when creating a new key.
366 Removes all keys belonging to
371 This option is useful to delete hashed hosts (see the
375 Print the SSHFP fingerprint resource record named
377 for the specified public key file.
379 Specify start point (in hex) when generating candidate moduli for DH-GEX.
381 Certify (sign) a public key using the specified CA key.
385 .It Fl T Ar output_file
386 Test DH group exchange candidate primes (generated using the
390 Specifies the type of key to create.
391 The possible values are
393 for protocol version 1 and
397 for protocol version 2.
398 .It Fl V Ar validity_interval
399 Specify a validity interval when signing a certificate.
400 A validity interval may consist of a single time, indicating that the
401 certificate is valid beginning now and expiring at that time, or may consist
402 of two times separated by a colon to indicate an explicit time interval.
403 The start time may be specified as a date in YYYYMMDD format, a time
404 in YYYYMMDDHHMMSS format or a relative time (to the current time) consisting
405 of a minus sign followed by a relative time in the format described in the
409 The end time may be specified as a YYYYMMDD date, a YYYYMMDDHHMMSS time or
410 a relative time starting with a plus character.
414 (valid from now to 52 weeks and one day from now),
416 (valid from four weeks ago to four weeks from now),
417 .Dq 20100101123000:20110101123000
418 (valid from 12:30 PM, January 1st, 2010 to 12:30 PM, January 1st, 2011),
420 (valid from yesterday to midnight, January 1st, 2011).
425 to print debugging messages about its progress.
426 This is helpful for debugging moduli generation.
429 options increase the verbosity.
431 .It Fl W Ar generator
432 Specify desired generator when testing candidate moduli for DH-GEX.
434 This option will read a private
435 OpenSSH format file and print an OpenSSH public key to stdout.
437 .Sh MODULI GENERATION
439 may be used to generate groups for the Diffie-Hellman Group Exchange
441 Generating these groups is a two-step process: first, candidate
442 primes are generated using a fast, but memory intensive process.
443 These candidate primes are then tested for suitability (a CPU-intensive
446 Generation of primes is performed using the
449 The desired length of the primes may be specified by the
454 .Dl # ssh-keygen -G moduli-2048.candidates -b 2048
456 By default, the search for primes begins at a random point in the
457 desired length range.
458 This may be overridden using the
460 option, which specifies a different start point (in hex).
462 Once a set of candidates have been generated, they must be tested for
464 This may be performed using the
469 will read candidates from standard input (or a file specified using the
474 .Dl # ssh-keygen -T moduli-2048 -f moduli-2048.candidates
476 By default, each candidate will be subjected to 100 primality tests.
477 This may be overridden using the
480 The DH generator value will be chosen automatically for the
481 prime under consideration.
482 If a specific generator is desired, it may be requested using the
485 Valid generator values are 2, 3, and 5.
487 Screened DH groups may be installed in
489 It is important that this file contains moduli of a range of bit lengths and
490 that both ends of a connection share common moduli.
493 supports signing of keys to produce certificates that may be used for
494 user or host authentication.
495 Certificates consist of a public key, some identity information, zero or
496 more principal (user or host) names and an optional set of constraints that
497 are signed by a Certification Authority (CA) key.
498 Clients or servers may then trust only the CA key and verify its signature
499 on a certificate rather than trusting many user/host keys.
500 Note that OpenSSH certificates are a different, and much simpler, format to
501 the X.509 certificates used in
505 supports two types of certificates: user and host.
506 User certificates authenticate users to servers, whereas host certificates
507 authenticate server hosts to users. To generate a user certificate:
509 .Dl $ ssh-keygen -s /path/to/ca_key -I key_id /path/to/user_key.pub
511 The resultant certificate will be placed in
512 .Pa /path/to/user_key_cert.pub .
513 A host certificate requires the
517 .Dl $ ssh-keygen -s /path/to/ca_key -I key_id -h /path/to/host_key.pub
519 The host certificate will be output to
520 .Pa /path/to/host_key_cert.pub .
523 is a "key identifier" that is logged by the server when the certificate
524 is used for authentication.
526 Certificates may be limited to be valid for a set of principal (user/host)
528 By default, generated certificates are valid for all users or hosts.
529 To generate a certificate for a specified set of principals:
531 .Dl $ ssh-keygen -s ca_key -I key_id -n user1,user2 user_key.pub
532 .Dl $ ssh-keygen -s ca_key -I key_id -h -n host.domain user_key.pub
534 Additional limitations on the validity and use of user certificates may
535 be specified through certificate constraints.
536 A constrained certificate may disable features of the SSH session, may be
537 valid only when presented from particular source addresses or may
538 force the use of a specific command.
539 For a list of valid certificate constraints, see the documentation for the
543 Finally, certificates may be defined with a validity lifetime.
546 option allows specification of certificate start and end times.
547 A certificate that is presented at a time outside this range will not be
549 By default, certificates have a maximum validity interval.
551 For certificates to be used for user or host authentication, the CA
552 public key must be trusted by
556 Please refer to those manual pages for details.
559 .It Pa ~/.ssh/identity
560 Contains the protocol version 1 RSA authentication identity of the user.
561 This file should not be readable by anyone but the user.
563 specify a passphrase when generating the key; that passphrase will be
564 used to encrypt the private part of this file using 128-bit AES.
565 This file is not automatically accessed by
567 but it is offered as the default file for the private key.
569 will read this file when a login attempt is made.
570 .It Pa ~/.ssh/identity.pub
571 Contains the protocol version 1 RSA public key for authentication.
572 The contents of this file should be added to
573 .Pa ~/.ssh/authorized_keys
575 where the user wishes to log in using RSA authentication.
576 There is no need to keep the contents of this file secret.
578 Contains the protocol version 2 DSA authentication identity of the user.
579 This file should not be readable by anyone but the user.
581 specify a passphrase when generating the key; that passphrase will be
582 used to encrypt the private part of this file using 128-bit AES.
583 This file is not automatically accessed by
585 but it is offered as the default file for the private key.
587 will read this file when a login attempt is made.
588 .It Pa ~/.ssh/id_dsa.pub
589 Contains the protocol version 2 DSA public key for authentication.
590 The contents of this file should be added to
591 .Pa ~/.ssh/authorized_keys
593 where the user wishes to log in using public key authentication.
594 There is no need to keep the contents of this file secret.
596 Contains the protocol version 2 RSA authentication identity of the user.
597 This file should not be readable by anyone but the user.
599 specify a passphrase when generating the key; that passphrase will be
600 used to encrypt the private part of this file using 128-bit AES.
601 This file is not automatically accessed by
603 but it is offered as the default file for the private key.
605 will read this file when a login attempt is made.
606 .It Pa ~/.ssh/id_rsa.pub
607 Contains the protocol version 2 RSA public key for authentication.
608 The contents of this file should be added to
609 .Pa ~/.ssh/authorized_keys
611 where the user wishes to log in using public key authentication.
612 There is no need to keep the contents of this file secret.
614 Contains Diffie-Hellman groups used for DH-GEX.
615 The file format is described in
626 .%T "The Secure Shell (SSH) Public Key File Format"
630 OpenSSH is a derivative of the original and free
631 ssh 1.2.12 release by Tatu Ylonen.
632 Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
633 Theo de Raadt and Dug Song
634 removed many bugs, re-added newer features and
636 Markus Friedl contributed the support for SSH
637 protocol versions 1.5 and 2.0.