- (dtucker) [openbsd-compat/port-linux.c] Make failure to write to the OOM
[openssh-git.git] / ssh-keygen.1
blob772caf7ad8624f582329a2b0269a8059436184f9
1 .\"     $OpenBSD: ssh-keygen.1,v 1.84 2010/02/26 20:29:54 djm Exp $
2 .\"
3 .\"  -*- nroff -*-
4 .\"
5 .\" Author: Tatu Ylonen <ylo@cs.hut.fi>
6 .\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
7 .\"                    All rights reserved
8 .\"
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".
14 .\"
15 .\"
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.
19 .\"
20 .\" Redistribution and use in source and binary forms, with or without
21 .\" modification, are permitted provided that the following conditions
22 .\" are met:
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.
28 .\"
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.
39 .\"
40 .Dd $Mdocdate: February 26 2010 $
41 .Dt SSH-KEYGEN 1
42 .Os
43 .Sh NAME
44 .Nm ssh-keygen
45 .Nd authentication key generation, management and conversion
46 .Sh SYNOPSIS
47 .Nm ssh-keygen
48 .Bk -words
49 .Op Fl q
50 .Op Fl b Ar bits
51 .Fl t Ar type
52 .Op Fl N Ar new_passphrase
53 .Op Fl C Ar comment
54 .Op Fl f Ar output_keyfile
55 .Ek
56 .Nm ssh-keygen
57 .Fl p
58 .Op Fl P Ar old_passphrase
59 .Op Fl N Ar new_passphrase
60 .Op Fl f Ar keyfile
61 .Nm ssh-keygen
62 .Fl i
63 .Op Fl f Ar input_keyfile
64 .Nm ssh-keygen
65 .Fl e
66 .Op Fl f Ar input_keyfile
67 .Nm ssh-keygen
68 .Fl y
69 .Op Fl f Ar input_keyfile
70 .Nm ssh-keygen
71 .Fl c
72 .Op Fl P Ar passphrase
73 .Op Fl C Ar comment
74 .Op Fl f Ar keyfile
75 .Nm ssh-keygen
76 .Fl l
77 .Op Fl f Ar input_keyfile
78 .Nm ssh-keygen
79 .Fl B
80 .Op Fl f Ar input_keyfile
81 .Nm ssh-keygen
82 .Fl D Ar pkcs11
83 .Nm ssh-keygen
84 .Fl F Ar hostname
85 .Op Fl f Ar known_hosts_file
86 .Op Fl l
87 .Nm ssh-keygen
88 .Fl H
89 .Op Fl f Ar known_hosts_file
90 .Nm ssh-keygen
91 .Fl R Ar hostname
92 .Op Fl f Ar known_hosts_file
93 .Nm ssh-keygen
94 .Fl r Ar hostname
95 .Op Fl f Ar input_keyfile
96 .Op Fl g
97 .Nm ssh-keygen
98 .Fl G Ar output_file
99 .Op Fl v
100 .Op Fl b Ar bits
101 .Op Fl M Ar memory
102 .Op Fl S Ar start_point
103 .Nm ssh-keygen
104 .Fl T Ar output_file
105 .Fl f Ar input_file
106 .Op Fl v
107 .Op Fl a Ar num_trials
108 .Op Fl W Ar generator
109 .Nm ssh-keygen
110 .Fl s Ar ca_key
111 .Fl I Ar certificate_identity
112 .Op Fl h
113 .Op Fl n Ar principals
114 .Op Fl O Ar constraint
115 .Op Fl V Ar validity_interval
117 .Sh DESCRIPTION
119 generates, manages and converts authentication keys for
120 .Xr ssh 1 .
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
125 .Fl t
126 option.
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
133 exchange (DH-GEX).
134 See the
135 .Sx MODULI GENERATION
136 section for details.
138 Normally each user wishing to use SSH
139 with RSA or DSA authentication runs this once to create the authentication
140 key in
141 .Pa ~/.ssh/identity ,
142 .Pa ~/.ssh/id_dsa
144 .Pa ~/.ssh/id_rsa .
145 Additionally, the system administrator may use this to generate host keys,
146 as seen in
147 .Pa /etc/rc .
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
152 .Dq .pub
153 appended.
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
157 arbitrary length.
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
160 characters you want.
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
167 .Fl p
168 option.
170 There is no way to recover a lost passphrase.
171 If the passphrase is
172 lost or forgotten, a new key must be generated and copied to the
173 corresponding public key to other machines.
175 For RSA1 keys,
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
180 .Dq user@host
181 when the key is created, but can be changed using the
182 .Fl c
183 option.
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:
189 .Bl -tag -width Ds
190 .It Fl a Ar trials
191 Specifies the number of primality tests to perform when screening DH-GEX
192 candidates using the
193 .Fl T
194 command.
195 .It Fl B
196 Show the bubblebabble digest of specified private or public key file.
197 .It Fl b Ar bits
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.
202 .It Fl C Ar comment
203 Provides a new comment.
204 .It Fl c
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.
209 .It Fl D Ar pkcs11
210 Download the RSA public keys provided by the PKCS#11 shared library
211 .Ar pkcs11 .
212 .It Fl e
213 This option will read a private or public OpenSSH key file and
214 print the key in
215 RFC 4716 SSH Public Key File Format
216 to stdout.
217 This option allows exporting keys for use by several commercial
218 SSH implementations.
219 .It Fl F Ar hostname
220 Search for the specified
221 .Ar hostname
222 in a
223 .Pa known_hosts
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
227 .Fl H
228 option to print found keys in a hashed format.
229 .It Fl f Ar filename
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
234 safety (using the
235 .Fl T
236 option) before use.
237 .It Fl g
238 Use generic DNS format when printing fingerprint resource records using the
239 .Fl r
240 command.
241 .It Fl H
242 Hash a
243 .Pa known_hosts
244 file.
245 This replaces all hostnames and addresses with hashed representations
246 within the specified file; the original content is moved to a file with
247 a .old suffix.
248 These hashes may be used normally by
249 .Nm ssh
251 .Nm sshd ,
252 but they do not reveal identifying information should the file's contents
253 be disclosed.
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.
256 .It Fl h
257 When signing a key, create a host certificate instead of a user
258 certificate.
259 Please see the
260 .Sx CERTIFICATES
261 section for details.
262 .It Fl I
263 Specify the key identity when signing a public key.
264 Please see the
265 .Sx CERTIFICATES
266 section for details.
267 .It Fl i
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.
272 also reads the
273 RFC 4716 SSH Public Key File Format.
274 This option allows importing keys from several commercial
275 SSH implementations.
276 .It Fl l
277 Show fingerprint of specified public key file.
278 Private RSA1 keys are also supported.
279 For RSA and DSA keys
281 tries to find the matching public key file and prints its fingerprint.
282 If combined with
283 .Fl v ,
284 an ASCII art representation of the key is supplied with the fingerprint.
285 .It Fl M Ar memory
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.
294 Please see the
295 .Sx CERTIFICATES
296 section for details.
297 .It Fl O Ar constraint
298 Specify a certificate constraint when signing a key.
299 This option may be specified multiple times.
300 Please see the
301 .Sx CERTIFICATES
302 section for details.
303 The constraints that are valid for user certificates are:
304 .Bl -tag -width Ds
305 .It Ic no-x11-forwarding
306 Disable X11 forwarding. (permitted by default)
307 .It Ic no-agent-forwarding
308 Disable
309 .Xr ssh-agent 1
310 forwarding. (permitted by default)
311 .It Ic no-port-forwarding
312 Disable port forwarding. (permitted by default)
313 .It Ic no-pty
314 Disable PTY allocation. (permitted by default)
315 .It Ic no-user-rc
316 Disable execution of
317 .Pa ~/.ssh/rc
319 .Xr sshd 8 .
320 (permitted by default)
321 .It Ic clear
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.
329 .It Ic permit-pty
330 Allows PTY allocation.
331 .It Ic permit-user-rc
332 Allows execution of
333 .Pa ~/.ssh/rc
335 .Xr sshd 8 .
336 .It Ic force-command=command
337 Forces the execution of
338 .Ar command
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
343 from.
345 .Ar address_list
346 is a comma-separated list of one or more address/netmask pairs in CIDR
347 format.
350 At present, no constraints are valid for host keys.
351 .It Fl P Ar passphrase
352 Provides the (old) passphrase.
353 .It Fl p
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
358 new passphrase.
359 .It Fl q
360 Silence
361 .Nm ssh-keygen .
362 Used by
363 .Pa /etc/rc
364 when creating a new key.
365 .It Fl R Ar hostname
366 Removes all keys belonging to
367 .Ar hostname
368 from a
369 .Pa known_hosts
370 file.
371 This option is useful to delete hashed hosts (see the
372 .Fl H
373 option above).
374 .It Fl r Ar hostname
375 Print the SSHFP fingerprint resource record named
376 .Ar hostname
377 for the specified public key file.
378 .It Fl S Ar start
379 Specify start point (in hex) when generating candidate moduli for DH-GEX.
380 .It Fl s Ar ca_key
381 Certify (sign) a public key using the specified CA key.
382 Please see the
383 .Sx CERTIFICATES
384 section for details.
385 .It Fl T Ar output_file
386 Test DH group exchange candidate primes (generated using the
387 .Fl G
388 option) for safety.
389 .It Fl t Ar type
390 Specifies the type of key to create.
391 The possible values are
392 .Dq rsa1
393 for protocol version 1 and
394 .Dq rsa
396 .Dq dsa
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
406 .Sx TIME FORMATS
407 section of
408 .Xr ssh_config 5 .
409 The end time may be specified as a YYYYMMDD date, a YYYYMMDDHHMMSS time or
410 a relative time starting with a plus character.
412 For example:
413 .Dq +52w1d
414 (valid from now to 52 weeks and one day from now),
415 .Dq -4w:+4w
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),
419 .Dq -1d:20110101
420 (valid from yesterday to midnight, January 1st, 2011).
421 .It Fl v
422 Verbose mode.
423 Causes
425 to print debugging messages about its progress.
426 This is helpful for debugging moduli generation.
427 Multiple
428 .Fl v
429 options increase the verbosity.
430 The maximum is 3.
431 .It Fl W Ar generator
432 Specify desired generator when testing candidate moduli for DH-GEX.
433 .It Fl y
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
440 (DH-GEX) protocol.
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
444 process).
446 Generation of primes is performed using the
447 .Fl G
448 option.
449 The desired length of the primes may be specified by the
450 .Fl b
451 option.
452 For example:
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
459 .Fl S
460 option, which specifies a different start point (in hex).
462 Once a set of candidates have been generated, they must be tested for
463 suitability.
464 This may be performed using the
465 .Fl T
466 option.
467 In this mode
469 will read candidates from standard input (or a file specified using the
470 .Fl f
471 option).
472 For example:
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
478 .Fl a
479 option.
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
483 .Fl W
484 option.
485 Valid generator values are 2, 3, and 5.
487 Screened DH groups may be installed in
488 .Pa /etc/moduli .
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.
491 .Sh CERTIFICATES
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
502 .Xr ssl 8 .
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
514 .Fl h
515 option:
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 .
521 In both cases,
522 .Ar key_id
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)
527 names.
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
540 .Fl O
541 option above.
543 Finally, certificates may be defined with a validity lifetime.
545 .Fl V
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
548 considered valid.
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
553 .Xr sshd 8
555 .Xr ssh 1 .
556 Please refer to those manual pages for details.
557 .Sh FILES
558 .Bl -tag -width Ds
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.
562 It is possible to
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.
568 .Xr ssh 1
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
574 on all machines
575 where the user wishes to log in using RSA authentication.
576 There is no need to keep the contents of this file secret.
577 .It Pa ~/.ssh/id_dsa
578 Contains the protocol version 2 DSA authentication identity of the user.
579 This file should not be readable by anyone but the user.
580 It is possible to
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.
586 .Xr ssh 1
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
592 on all machines
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.
595 .It Pa ~/.ssh/id_rsa
596 Contains the protocol version 2 RSA authentication identity of the user.
597 This file should not be readable by anyone but the user.
598 It is possible to
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.
604 .Xr ssh 1
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
610 on all machines
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.
613 .It Pa /etc/moduli
614 Contains Diffie-Hellman groups used for DH-GEX.
615 The file format is described in
616 .Xr moduli 5 .
618 .Sh SEE ALSO
619 .Xr ssh 1 ,
620 .Xr ssh-add 1 ,
621 .Xr ssh-agent 1 ,
622 .Xr moduli 5 ,
623 .Xr sshd 8
625 .%R RFC 4716
626 .%T "The Secure Shell (SSH) Public Key File Format"
627 .%D 2006
629 .Sh AUTHORS
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
635 created OpenSSH.
636 Markus Friedl contributed the support for SSH
637 protocol versions 1.5 and 2.0.