1.\" $OpenBSD: ssh-keygen.1,v 1.143 2017/07/07 03:53:12 djm Exp $ 2.\" 3.\" Author: Tatu Ylonen <ylo@cs.hut.fi> 4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 5.\" All rights reserved 6.\" 7.\" As far as I am concerned, the code I have written for this software 8.\" can be used freely for any purpose. Any derived versions of this 9.\" software must be clearly marked as such, and if the derived work is 10.\" incompatible with the protocol description in the RFC file, it must be 11.\" called by a name other than "ssh" or "Secure Shell". 12.\" 13.\" 14.\" Copyright (c) 1999,2000 Markus Friedl. All rights reserved. 15.\" Copyright (c) 1999 Aaron Campbell. All rights reserved. 16.\" Copyright (c) 1999 Theo de Raadt. All rights reserved. 17.\" 18.\" Redistribution and use in source and binary forms, with or without 19.\" modification, are permitted provided that the following conditions 20.\" are met: 21.\" 1. Redistributions of source code must retain the above copyright 22.\" notice, this list of conditions and the following disclaimer. 23.\" 2. Redistributions in binary form must reproduce the above copyright 24.\" notice, this list of conditions and the following disclaimer in the 25.\" documentation and/or other materials provided with the distribution. 26.\" 27.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 28.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 29.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 30.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 31.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 32.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 33.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 34.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 37.\" 38.Dd $Mdocdate: July 7 2017 $ 39.Dt SSH-KEYGEN 1 40.Os 41.Sh NAME 42.Nm ssh-keygen 43.Nd authentication key generation, management and conversion 44.Sh SYNOPSIS 45.Bk -words 46.Nm ssh-keygen 47.Op Fl q 48.Op Fl b Ar bits 49.Op Fl t Cm dsa | ecdsa | ed25519 | rsa 50.Op Fl N Ar new_passphrase 51.Op Fl C Ar comment 52.Op Fl f Ar output_keyfile 53.Nm ssh-keygen 54.Fl p 55.Op Fl P Ar old_passphrase 56.Op Fl N Ar new_passphrase 57.Op Fl f Ar keyfile 58.Nm ssh-keygen 59.Fl i 60.Op Fl m Ar key_format 61.Op Fl f Ar input_keyfile 62.Nm ssh-keygen 63.Fl e 64.Op Fl m Ar key_format 65.Op Fl f Ar input_keyfile 66.Nm ssh-keygen 67.Fl y 68.Op Fl f Ar input_keyfile 69.Nm ssh-keygen 70.Fl c 71.Op Fl P Ar passphrase 72.Op Fl C Ar comment 73.Op Fl f Ar keyfile 74.Nm ssh-keygen 75.Fl l 76.Op Fl v 77.Op Fl E Ar fingerprint_hash 78.Op Fl f Ar input_keyfile 79.Nm ssh-keygen 80.Fl B 81.Op Fl f Ar input_keyfile 82.Nm ssh-keygen 83.Fl D Ar pkcs11 84.Nm ssh-keygen 85.Fl F Ar hostname 86.Op Fl f Ar known_hosts_file 87.Op Fl l 88.Nm ssh-keygen 89.Fl H 90.Op Fl f Ar known_hosts_file 91.Nm ssh-keygen 92.Fl R Ar hostname 93.Op Fl f Ar known_hosts_file 94.Nm ssh-keygen 95.Fl r Ar hostname 96.Op Fl f Ar input_keyfile 97.Op Fl g 98.Nm ssh-keygen 99.Fl G Ar output_file 100.Op Fl v 101.Op Fl b Ar bits 102.Op Fl M Ar memory 103.Op Fl S Ar start_point 104.Nm ssh-keygen 105.Fl T Ar output_file 106.Fl f Ar input_file 107.Op Fl v 108.Op Fl a Ar rounds 109.Op Fl J Ar num_lines 110.Op Fl j Ar start_line 111.Op Fl K Ar checkpt 112.Op Fl W Ar generator 113.Nm ssh-keygen 114.Fl s Ar ca_key 115.Fl I Ar certificate_identity 116.Op Fl h 117.Op Fl U 118.Op Fl D Ar pkcs11_provider 119.Op Fl n Ar principals 120.Op Fl O Ar option 121.Op Fl V Ar validity_interval 122.Op Fl z Ar serial_number 123.Ar 124.Nm ssh-keygen 125.Fl L 126.Op Fl f Ar input_keyfile 127.Nm ssh-keygen 128.Fl A 129.Op Fl f Ar prefix_path 130.Nm ssh-keygen 131.Fl k 132.Fl f Ar krl_file 133.Op Fl u 134.Op Fl s Ar ca_public 135.Op Fl z Ar version_number 136.Ar 137.Nm ssh-keygen 138.Fl Q 139.Fl f Ar krl_file 140.Ar 141.Ek 142.Sh DESCRIPTION 143.Nm 144generates, manages and converts authentication keys for 145.Xr ssh 1 . 146.Nm 147can create keys for use by SSH protocol version 2. 148.Pp 149The type of key to be generated is specified with the 150.Fl t 151option. 152If invoked without any arguments, 153.Nm 154will generate an RSA key. 155.Pp 156.Nm 157is also used to generate groups for use in Diffie-Hellman group 158exchange (DH-GEX). 159See the 160.Sx MODULI GENERATION 161section for details. 162.Pp 163Finally, 164.Nm 165can be used to generate and update Key Revocation Lists, and to test whether 166given keys have been revoked by one. 167See the 168.Sx KEY REVOCATION LISTS 169section for details. 170.Pp 171Normally each user wishing to use SSH 172with public key authentication runs this once to create the authentication 173key in 174.Pa ~/.ssh/id_dsa , 175.Pa ~/.ssh/id_ecdsa , 176.Pa ~/.ssh/id_ed25519 177or 178.Pa ~/.ssh/id_rsa . 179Additionally, the system administrator may use this to generate host keys, 180as seen in 181.Pa /etc/rc . 182.Pp 183Normally this program generates the key and asks for a file in which 184to store the private key. 185The public key is stored in a file with the same name but 186.Dq .pub 187appended. 188The program also asks for a passphrase. 189The passphrase may be empty to indicate no passphrase 190(host keys must have an empty passphrase), or it may be a string of 191arbitrary length. 192A passphrase is similar to a password, except it can be a phrase with a 193series of words, punctuation, numbers, whitespace, or any string of 194characters you want. 195Good passphrases are 10-30 characters long, are 196not simple sentences or otherwise easily guessable (English 197prose has only 1-2 bits of entropy per character, and provides very bad 198passphrases), and contain a mix of upper and lowercase letters, 199numbers, and non-alphanumeric characters. 200The passphrase can be changed later by using the 201.Fl p 202option. 203.Pp 204There is no way to recover a lost passphrase. 205If the passphrase is lost or forgotten, a new key must be generated 206and the corresponding public key copied to other machines. 207.Pp 208For keys stored in the newer OpenSSH format, 209there is also a comment field in the key file that is only for 210convenience to the user to help identify the key. 211The comment can tell what the key is for, or whatever is useful. 212The comment is initialized to 213.Dq user@host 214when the key is created, but can be changed using the 215.Fl c 216option. 217.Pp 218After a key is generated, instructions below detail where the keys 219should be placed to be activated. 220.Pp 221The options are as follows: 222.Bl -tag -width Ds 223.It Fl A 224For each of the key types (rsa, dsa, ecdsa and ed25519) 225for which host keys 226do not exist, generate the host keys with the default key file path, 227an empty passphrase, default bits for the key type, and default comment. 228If a 229.Fl f 230option has been specified, then its argument is used as a prefix to the 231default path for the resulting host key files. 232This is used by 233.Pa /etc/rc 234to generate new host keys. 235.It Fl a Ar rounds 236When saving a new-format private key (i.e. an ed25519 key or when the 237.Fl o 238flag is set), this option specifies the number of KDF (key derivation function) 239rounds used. 240Higher numbers result in slower passphrase verification and increased 241resistance to brute-force password cracking (should the keys be stolen). 242.Pp 243When screening DH-GEX candidates (using the 244.Fl T 245command). 246This option specifies the number of primality tests to perform. 247.It Fl B 248Show the bubblebabble digest of specified private or public key file. 249.It Fl b Ar bits 250Specifies the number of bits in the key to create. 251For RSA keys, the minimum size is 1024 bits and the default is 2048 bits. 252Generally, 2048 bits is considered sufficient. 253DSA keys must be exactly 1024 bits as specified by FIPS 186-2. 254For ECDSA keys, the 255.Fl b 256flag determines the key length by selecting from one of three elliptic 257curve sizes: 256, 384 or 521 bits. 258Attempting to use bit lengths other than these three values for ECDSA keys 259will fail. 260Ed25519 keys have a fixed length and the 261.Fl b 262flag will be ignored. 263.It Fl C Ar comment 264Provides a new comment. 265.It Fl c 266Requests changing the comment in the private and public key files. 267This operation is only supported for keys stored in the 268newer OpenSSH format. 269The program will prompt for the file containing the private keys, for 270the passphrase if the key has one, and for the new comment. 271.It Fl D Ar pkcs11 272Download the RSA public keys provided by the PKCS#11 shared library 273.Ar pkcs11 . 274When used in combination with 275.Fl s , 276this option indicates that a CA key resides in a PKCS#11 token (see the 277.Sx CERTIFICATES 278section for details). 279.It Fl E Ar fingerprint_hash 280Specifies the hash algorithm used when displaying key fingerprints. 281Valid options are: 282.Dq md5 283and 284.Dq sha256 . 285The default is 286.Dq sha256 . 287.It Fl e 288This option will read a private or public OpenSSH key file and 289print to stdout the key in one of the formats specified by the 290.Fl m 291option. 292The default export format is 293.Dq RFC4716 . 294This option allows exporting OpenSSH keys for use by other programs, including 295several commercial SSH implementations. 296.It Fl F Ar hostname 297Search for the specified 298.Ar hostname 299in a 300.Pa known_hosts 301file, listing any occurrences found. 302This option is useful to find hashed host names or addresses and may also be 303used in conjunction with the 304.Fl H 305option to print found keys in a hashed format. 306.It Fl f Ar filename 307Specifies the filename of the key file. 308.It Fl G Ar output_file 309Generate candidate primes for DH-GEX. 310These primes must be screened for 311safety (using the 312.Fl T 313option) before use. 314.It Fl g 315Use generic DNS format when printing fingerprint resource records using the 316.Fl r 317command. 318.It Fl H 319Hash a 320.Pa known_hosts 321file. 322This replaces all hostnames and addresses with hashed representations 323within the specified file; the original content is moved to a file with 324a .old suffix. 325These hashes may be used normally by 326.Nm ssh 327and 328.Nm sshd , 329but they do not reveal identifying information should the file's contents 330be disclosed. 331This option will not modify existing hashed hostnames and is therefore safe 332to use on files that mix hashed and non-hashed names. 333.It Fl h 334When signing a key, create a host certificate instead of a user 335certificate. 336Please see the 337.Sx CERTIFICATES 338section for details. 339.It Fl I Ar certificate_identity 340Specify the key identity when signing a public key. 341Please see the 342.Sx CERTIFICATES 343section for details. 344.It Fl i 345This option will read an unencrypted private (or public) key file 346in the format specified by the 347.Fl m 348option and print an OpenSSH compatible private 349(or public) key to stdout. 350This option allows importing keys from other software, including several 351commercial SSH implementations. 352The default import format is 353.Dq RFC4716 . 354.It Fl J Ar num_lines 355Exit after screening the specified number of lines 356while performing DH candidate screening using the 357.Fl T 358option. 359.It Fl j Ar start_line 360Start screening at the specified line number 361while performing DH candidate screening using the 362.Fl T 363option. 364.It Fl K Ar checkpt 365Write the last line processed to the file 366.Ar checkpt 367while performing DH candidate screening using the 368.Fl T 369option. 370This will be used to skip lines in the input file that have already been 371processed if the job is restarted. 372.It Fl k 373Generate a KRL file. 374In this mode, 375.Nm 376will generate a KRL file at the location specified via the 377.Fl f 378flag that revokes every key or certificate presented on the command line. 379Keys/certificates to be revoked may be specified by public key file or 380using the format described in the 381.Sx KEY REVOCATION LISTS 382section. 383.It Fl L 384Prints the contents of one or more certificates. 385.It Fl l 386Show fingerprint of specified public key file. 387For RSA and DSA keys 388.Nm 389tries to find the matching public key file and prints its fingerprint. 390If combined with 391.Fl v , 392a visual ASCII art representation of the key is supplied with the 393fingerprint. 394.It Fl M Ar memory 395Specify the amount of memory to use (in megabytes) when generating 396candidate moduli for DH-GEX. 397.It Fl m Ar key_format 398Specify a key format for the 399.Fl i 400(import) or 401.Fl e 402(export) conversion options. 403The supported key formats are: 404.Dq RFC4716 405(RFC 4716/SSH2 public or private key), 406.Dq PKCS8 407(PEM PKCS8 public key) 408or 409.Dq PEM 410(PEM public key). 411The default conversion format is 412.Dq RFC4716 . 413.It Fl N Ar new_passphrase 414Provides the new passphrase. 415.It Fl n Ar principals 416Specify one or more principals (user or host names) to be included in 417a certificate when signing a key. 418Multiple principals may be specified, separated by commas. 419Please see the 420.Sx CERTIFICATES 421section for details. 422.It Fl O Ar option 423Specify a certificate option when signing a key. 424This option may be specified multiple times. 425See also the 426.Sx CERTIFICATES 427section for further details. 428The options that are valid for user certificates are: 429.Pp 430.Bl -tag -width Ds -compact 431.It Ic clear 432Clear all enabled permissions. 433This is useful for clearing the default set of permissions so permissions may 434be added individually. 435.Pp 436.It Ic critical : Ns Ar name Ns Op Ns = Ns Ar contents 437.It Ic extension : Ns Ar name Ns Op Ns = Ns Ar contents 438Includes an arbitrary certificate critical option or extension. 439The specified 440.Ar name 441should include a domain suffix, e.g.\& 442.Dq name@example.com . 443If 444.Ar contents 445is specified then it is included as the contents of the extension/option 446encoded as a string, otherwise the extension/option is created with no 447contents (usually indicating a flag). 448Extensions may be ignored by a client or server that does not recognise them, 449whereas unknown critical options will cause the certificate to be refused. 450.Pp 451At present, no standard options are valid for host keys. 452.Pp 453.It Ic force-command Ns = Ns Ar command 454Forces the execution of 455.Ar command 456instead of any shell or command specified by the user when 457the certificate is used for authentication. 458.Pp 459.It Ic no-agent-forwarding 460Disable 461.Xr ssh-agent 1 462forwarding (permitted by default). 463.Pp 464.It Ic no-port-forwarding 465Disable port forwarding (permitted by default). 466.Pp 467.It Ic no-pty 468Disable PTY allocation (permitted by default). 469.Pp 470.It Ic no-user-rc 471Disable execution of 472.Pa ~/.ssh/rc 473by 474.Xr sshd 8 475(permitted by default). 476.Pp 477.It Ic no-x11-forwarding 478Disable X11 forwarding (permitted by default). 479.Pp 480.It Ic permit-agent-forwarding 481Allows 482.Xr ssh-agent 1 483forwarding. 484.Pp 485.It Ic permit-port-forwarding 486Allows port forwarding. 487.Pp 488.It Ic permit-pty 489Allows PTY allocation. 490.Pp 491.It Ic permit-user-rc 492Allows execution of 493.Pa ~/.ssh/rc 494by 495.Xr sshd 8 . 496.Pp 497.It Ic permit-x11-forwarding 498Allows X11 forwarding. 499.Pp 500.It Ic source-address Ns = Ns Ar address_list 501Restrict the source addresses from which the certificate is considered valid. 502The 503.Ar address_list 504is a comma-separated list of one or more address/netmask pairs in CIDR 505format. 506.El 507.It Fl o 508Causes 509.Nm 510to save private keys using the new OpenSSH format rather than 511the more compatible PEM format. 512The new format has increased resistance to brute-force password cracking 513but is not supported by versions of OpenSSH prior to 6.5. 514Ed25519 keys always use the new private key format. 515.It Fl P Ar passphrase 516Provides the (old) passphrase. 517.It Fl p 518Requests changing the passphrase of a private key file instead of 519creating a new private key. 520The program will prompt for the file 521containing the private key, for the old passphrase, and twice for the 522new passphrase. 523.It Fl Q 524Test whether keys have been revoked in a KRL. 525.It Fl q 526Silence 527.Nm ssh-keygen . 528.It Fl R Ar hostname 529Removes all keys belonging to 530.Ar hostname 531from a 532.Pa known_hosts 533file. 534This option is useful to delete hashed hosts (see the 535.Fl H 536option above). 537.It Fl r Ar hostname 538Print the SSHFP fingerprint resource record named 539.Ar hostname 540for the specified public key file. 541.It Fl S Ar start 542Specify start point (in hex) when generating candidate moduli for DH-GEX. 543.It Fl s Ar ca_key 544Certify (sign) a public key using the specified CA key. 545Please see the 546.Sx CERTIFICATES 547section for details. 548.Pp 549When generating a KRL, 550.Fl s 551specifies a path to a CA public key file used to revoke certificates directly 552by key ID or serial number. 553See the 554.Sx KEY REVOCATION LISTS 555section for details. 556.It Fl T Ar output_file 557Test DH group exchange candidate primes (generated using the 558.Fl G 559option) for safety. 560.It Fl t Cm dsa | ecdsa | ed25519 | rsa 561Specifies the type of key to create. 562The possible values are 563.Dq dsa , 564.Dq ecdsa , 565.Dq ed25519 , 566or 567.Dq rsa . 568.It Fl U 569When used in combination with 570.Fl s , 571this option indicates that a CA key resides in a 572.Xr ssh-agent 1 . 573See the 574.Sx CERTIFICATES 575section for more information. 576.It Fl u 577Update a KRL. 578When specified with 579.Fl k , 580keys listed via the command line are added to the existing KRL rather than 581a new KRL being created. 582.It Fl V Ar validity_interval 583Specify a validity interval when signing a certificate. 584A validity interval may consist of a single time, indicating that the 585certificate is valid beginning now and expiring at that time, or may consist 586of two times separated by a colon to indicate an explicit time interval. 587The start time may be specified as a date in YYYYMMDD format, a time 588in YYYYMMDDHHMMSS format or a relative time (to the current time) consisting 589of a minus sign followed by a relative time in the format described in the 590TIME FORMATS section of 591.Xr sshd_config 5 . 592The end time may be specified as a YYYYMMDD date, a YYYYMMDDHHMMSS time or 593a relative time starting with a plus character. 594.Pp 595For example: 596.Dq +52w1d 597(valid from now to 52 weeks and one day from now), 598.Dq -4w:+4w 599(valid from four weeks ago to four weeks from now), 600.Dq 20100101123000:20110101123000 601(valid from 12:30 PM, January 1st, 2010 to 12:30 PM, January 1st, 2011), 602.Dq -1d:20110101 603(valid from yesterday to midnight, January 1st, 2011). 604.It Fl v 605Verbose mode. 606Causes 607.Nm 608to print debugging messages about its progress. 609This is helpful for debugging moduli generation. 610Multiple 611.Fl v 612options increase the verbosity. 613The maximum is 3. 614.It Fl W Ar generator 615Specify desired generator when testing candidate moduli for DH-GEX. 616.It Fl y 617This option will read a private 618OpenSSH format file and print an OpenSSH public key to stdout. 619.It Fl z Ar serial_number 620Specifies a serial number to be embedded in the certificate to distinguish 621this certificate from others from the same CA. 622The default serial number is zero. 623.Pp 624When generating a KRL, the 625.Fl z 626flag is used to specify a KRL version number. 627.El 628.Sh MODULI GENERATION 629.Nm 630may be used to generate groups for the Diffie-Hellman Group Exchange 631(DH-GEX) protocol. 632Generating these groups is a two-step process: first, candidate 633primes are generated using a fast, but memory intensive process. 634These candidate primes are then tested for suitability (a CPU-intensive 635process). 636.Pp 637Generation of primes is performed using the 638.Fl G 639option. 640The desired length of the primes may be specified by the 641.Fl b 642option. 643For example: 644.Pp 645.Dl # ssh-keygen -G moduli-2048.candidates -b 2048 646.Pp 647By default, the search for primes begins at a random point in the 648desired length range. 649This may be overridden using the 650.Fl S 651option, which specifies a different start point (in hex). 652.Pp 653Once a set of candidates have been generated, they must be screened for 654suitability. 655This may be performed using the 656.Fl T 657option. 658In this mode 659.Nm 660will read candidates from standard input (or a file specified using the 661.Fl f 662option). 663For example: 664.Pp 665.Dl # ssh-keygen -T moduli-2048 -f moduli-2048.candidates 666.Pp 667By default, each candidate will be subjected to 100 primality tests. 668This may be overridden using the 669.Fl a 670option. 671The DH generator value will be chosen automatically for the 672prime under consideration. 673If a specific generator is desired, it may be requested using the 674.Fl W 675option. 676Valid generator values are 2, 3, and 5. 677.Pp 678Screened DH groups may be installed in 679.Pa /etc/moduli . 680It is important that this file contains moduli of a range of bit lengths and 681that both ends of a connection share common moduli. 682.Sh CERTIFICATES 683.Nm 684supports signing of keys to produce certificates that may be used for 685user or host authentication. 686Certificates consist of a public key, some identity information, zero or 687more principal (user or host) names and a set of options that 688are signed by a Certification Authority (CA) key. 689Clients or servers may then trust only the CA key and verify its signature 690on a certificate rather than trusting many user/host keys. 691Note that OpenSSH certificates are a different, and much simpler, format to 692the X.509 certificates used in 693.Xr ssl 8 . 694.Pp 695.Nm 696supports two types of certificates: user and host. 697User certificates authenticate users to servers, whereas host certificates 698authenticate server hosts to users. 699To generate a user certificate: 700.Pp 701.Dl $ ssh-keygen -s /path/to/ca_key -I key_id /path/to/user_key.pub 702.Pp 703The resultant certificate will be placed in 704.Pa /path/to/user_key-cert.pub . 705A host certificate requires the 706.Fl h 707option: 708.Pp 709.Dl $ ssh-keygen -s /path/to/ca_key -I key_id -h /path/to/host_key.pub 710.Pp 711The host certificate will be output to 712.Pa /path/to/host_key-cert.pub . 713.Pp 714It is possible to sign using a CA key stored in a PKCS#11 token by 715providing the token library using 716.Fl D 717and identifying the CA key by providing its public half as an argument 718to 719.Fl s : 720.Pp 721.Dl $ ssh-keygen -s ca_key.pub -D libpkcs11.so -I key_id user_key.pub 722.Pp 723Similarly, it is possible for the CA key to be hosted in a 724.Xr ssh-agent 1 . 725This is indicated by the 726.Fl U 727flag and, again, the CA key must be identified by its public half. 728.Pp 729.Dl $ ssh-keygen -Us ca_key.pub -I key_id user_key.pub 730.Pp 731In all cases, 732.Ar key_id 733is a "key identifier" that is logged by the server when the certificate 734is used for authentication. 735.Pp 736Certificates may be limited to be valid for a set of principal (user/host) 737names. 738By default, generated certificates are valid for all users or hosts. 739To generate a certificate for a specified set of principals: 740.Pp 741.Dl $ ssh-keygen -s ca_key -I key_id -n user1,user2 user_key.pub 742.Dl "$ ssh-keygen -s ca_key -I key_id -h -n host.domain host_key.pub" 743.Pp 744Additional limitations on the validity and use of user certificates may 745be specified through certificate options. 746A certificate option may disable features of the SSH session, may be 747valid only when presented from particular source addresses or may 748force the use of a specific command. 749For a list of valid certificate options, see the documentation for the 750.Fl O 751option above. 752.Pp 753Finally, certificates may be defined with a validity lifetime. 754The 755.Fl V 756option allows specification of certificate start and end times. 757A certificate that is presented at a time outside this range will not be 758considered valid. 759By default, certificates are valid from 760.Ux 761Epoch to the distant future. 762.Pp 763For certificates to be used for user or host authentication, the CA 764public key must be trusted by 765.Xr sshd 8 766or 767.Xr ssh 1 . 768Please refer to those manual pages for details. 769.Sh KEY REVOCATION LISTS 770.Nm 771is able to manage OpenSSH format Key Revocation Lists (KRLs). 772These binary files specify keys or certificates to be revoked using a 773compact format, taking as little as one bit per certificate if they are being 774revoked by serial number. 775.Pp 776KRLs may be generated using the 777.Fl k 778flag. 779This option reads one or more files from the command line and generates a new 780KRL. 781The files may either contain a KRL specification (see below) or public keys, 782listed one per line. 783Plain public keys are revoked by listing their hash or contents in the KRL and 784certificates revoked by serial number or key ID (if the serial is zero or 785not available). 786.Pp 787Revoking keys using a KRL specification offers explicit control over the 788types of record used to revoke keys and may be used to directly revoke 789certificates by serial number or key ID without having the complete original 790certificate on hand. 791A KRL specification consists of lines containing one of the following directives 792followed by a colon and some directive-specific information. 793.Bl -tag -width Ds 794.It Cm serial : Ar serial_number Ns Op - Ns Ar serial_number 795Revokes a certificate with the specified serial number. 796Serial numbers are 64-bit values, not including zero and may be expressed 797in decimal, hex or octal. 798If two serial numbers are specified separated by a hyphen, then the range 799of serial numbers including and between each is revoked. 800The CA key must have been specified on the 801.Nm 802command line using the 803.Fl s 804option. 805.It Cm id : Ar key_id 806Revokes a certificate with the specified key ID string. 807The CA key must have been specified on the 808.Nm 809command line using the 810.Fl s 811option. 812.It Cm key : Ar public_key 813Revokes the specified key. 814If a certificate is listed, then it is revoked as a plain public key. 815.It Cm sha1 : Ar public_key 816Revokes the specified key by its SHA1 hash. 817.El 818.Pp 819KRLs may be updated using the 820.Fl u 821flag in addition to 822.Fl k . 823When this option is specified, keys listed via the command line are merged into 824the KRL, adding to those already there. 825.Pp 826It is also possible, given a KRL, to test whether it revokes a particular key 827(or keys). 828The 829.Fl Q 830flag will query an existing KRL, testing each key specified on the command line. 831If any key listed on the command line has been revoked (or an error encountered) 832then 833.Nm 834will exit with a non-zero exit status. 835A zero exit status will only be returned if no key was revoked. 836.Sh FILES 837.Bl -tag -width Ds -compact 838.It Pa ~/.ssh/id_dsa 839.It Pa ~/.ssh/id_ecdsa 840.It Pa ~/.ssh/id_ed25519 841.It Pa ~/.ssh/id_rsa 842Contains the DSA, ECDSA, Ed25519 or RSA 843authentication identity of the user. 844This file should not be readable by anyone but the user. 845It is possible to 846specify a passphrase when generating the key; that passphrase will be 847used to encrypt the private part of this file using 128-bit AES. 848This file is not automatically accessed by 849.Nm 850but it is offered as the default file for the private key. 851.Xr ssh 1 852will read this file when a login attempt is made. 853.Pp 854.It Pa ~/.ssh/id_dsa.pub 855.It Pa ~/.ssh/id_ecdsa.pub 856.It Pa ~/.ssh/id_ed25519.pub 857.It Pa ~/.ssh/id_rsa.pub 858Contains the DSA, ECDSA, Ed25519 or RSA 859public key for authentication. 860The contents of this file should be added to 861.Pa ~/.ssh/authorized_keys 862on all machines 863where the user wishes to log in using public key authentication. 864There is no need to keep the contents of this file secret. 865.Pp 866.It Pa /etc/moduli 867Contains Diffie-Hellman groups used for DH-GEX. 868The file format is described in 869.Xr moduli 5 . 870.El 871.Sh SEE ALSO 872.Xr ssh 1 , 873.Xr ssh-add 1 , 874.Xr ssh-agent 1 , 875.Xr moduli 5 , 876.Xr sshd 8 877.Rs 878.%R RFC 4716 879.%T "The Secure Shell (SSH) Public Key File Format" 880.%D 2006 881.Re 882.Sh AUTHORS 883OpenSSH is a derivative of the original and free 884ssh 1.2.12 release by Tatu Ylonen. 885Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, 886Theo de Raadt and Dug Song 887removed many bugs, re-added newer features and 888created OpenSSH. 889Markus Friedl contributed the support for SSH 890protocol versions 1.5 and 2.0. 891