mirror of
				https://github.com/PowerShell/Win32-OpenSSH.git
				synced 2025-11-03 21:24:40 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			567 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			567 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
SSH-KEYGEN(1)               General Commands Manual              SSH-KEYGEN(1)
 | 
						|
 | 
						|
NAME
 | 
						|
     ssh-keygen M-bM-^@M-^S authentication key generation, management and conversion
 | 
						|
 | 
						|
SYNOPSIS
 | 
						|
     ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1]
 | 
						|
                [-N new_passphrase] [-C comment] [-f output_keyfile]
 | 
						|
     ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
 | 
						|
     ssh-keygen -i [-m key_format] [-f input_keyfile]
 | 
						|
     ssh-keygen -e [-m key_format] [-f input_keyfile]
 | 
						|
     ssh-keygen -y [-f input_keyfile]
 | 
						|
     ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
 | 
						|
     ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
 | 
						|
     ssh-keygen -B [-f input_keyfile]
 | 
						|
     ssh-keygen -D pkcs11
 | 
						|
     ssh-keygen -F hostname [-f known_hosts_file] [-l]
 | 
						|
     ssh-keygen -H [-f known_hosts_file]
 | 
						|
     ssh-keygen -R hostname [-f known_hosts_file]
 | 
						|
     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 rounds] [-J num_lines]
 | 
						|
                [-j start_line] [-K checkpt] [-W generator]
 | 
						|
     ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals]
 | 
						|
                [-O option] [-V validity_interval] [-z serial_number] file ...
 | 
						|
     ssh-keygen -L [-f input_keyfile]
 | 
						|
     ssh-keygen -A
 | 
						|
     ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
 | 
						|
                file ...
 | 
						|
     ssh-keygen -Q -f krl_file file ...
 | 
						|
 | 
						|
DESCRIPTION
 | 
						|
     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 DSA, ECDSA, Ed25519 or RSA keys for use by SSH protocol version 2.
 | 
						|
     The type of key to be generated is specified with the -t option.  If
 | 
						|
     invoked without any arguments, ssh-keygen will generate an RSA key for
 | 
						|
     use in SSH protocol 2 connections.
 | 
						|
 | 
						|
     ssh-keygen is also used to generate groups for use in Diffie-Hellman
 | 
						|
     group exchange (DH-GEX).  See the MODULI GENERATION section for details.
 | 
						|
 | 
						|
     Finally, ssh-keygen can be used to generate and update Key Revocation
 | 
						|
     Lists, and to test whether given keys have been revoked by one.  See the
 | 
						|
     KEY REVOCATION LISTS section for details.
 | 
						|
 | 
						|
     Normally each user wishing to use SSH with public key authentication runs
 | 
						|
     this once to create the authentication key in ~/.ssh/identity,
 | 
						|
     ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 or ~/.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 M-bM-^@M-^\.pubM-bM-^@M-^] 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 the corresponding public
 | 
						|
     key copied 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 M-bM-^@M-^\user@hostM-bM-^@M-^] 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      For each of the key types (rsa1, rsa, dsa, ecdsa and ed25519) for
 | 
						|
             which host keys do not exist, generate the host keys with the
 | 
						|
             default key file path, an empty passphrase, default bits for the
 | 
						|
             key type, and default comment.  This is used by /etc/rc to
 | 
						|
             generate new host keys.
 | 
						|
 | 
						|
     -a rounds
 | 
						|
             When saving a new-format private key (i.e. an ed25519 key or any
 | 
						|
             SSH protocol 2 key when the -o flag is set), this option
 | 
						|
             specifies the number of KDF (key derivation function) rounds
 | 
						|
             used.  Higher numbers result in slower passphrase verification
 | 
						|
             and increased resistance to brute-force password cracking (should
 | 
						|
             the keys be stolen).
 | 
						|
 | 
						|
             When screening DH-GEX candidates ( using the -T command).  This
 | 
						|
             option specifies the number of primality tests to perform.
 | 
						|
 | 
						|
     -B      Show the bubblebabble digest of specified private or public key
 | 
						|
             file.
 | 
						|
 | 
						|
     -b bits
 | 
						|
             Specifies the number of bits in the key to create.  For RSA keys,
 | 
						|
             the minimum size is 1024 bits and the default is 2048 bits.
 | 
						|
             Generally, 2048 bits is considered sufficient.  DSA keys must be
 | 
						|
             exactly 1024 bits as specified by FIPS 186-2.  For ECDSA keys,
 | 
						|
             the -b flag determines the key length by selecting from one of
 | 
						|
             three elliptic curve sizes: 256, 384 or 521 bits.  Attempting to
 | 
						|
             use bit lengths other than these three values for ECDSA keys will
 | 
						|
             fail.  Ed25519 keys have a fixed length and the -b flag will be
 | 
						|
             ignored.
 | 
						|
 | 
						|
     -C comment
 | 
						|
             Provides a new comment.
 | 
						|
 | 
						|
     -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.
 | 
						|
 | 
						|
     -D pkcs11
 | 
						|
             Download the RSA public keys provided by the PKCS#11 shared
 | 
						|
             library pkcs11.  When used in combination with -s, this option
 | 
						|
             indicates that a CA key resides in a PKCS#11 token (see the
 | 
						|
             CERTIFICATES section for details).
 | 
						|
 | 
						|
     -E fingerprint_hash
 | 
						|
             Specifies the hash algorithm used when displaying key
 | 
						|
             fingerprints.  Valid options are: M-bM-^@M-^\md5M-bM-^@M-^] and M-bM-^@M-^\sha256M-bM-^@M-^].  The
 | 
						|
             default is M-bM-^@M-^\sha256M-bM-^@M-^].
 | 
						|
 | 
						|
     -e      This option will read a private or public OpenSSH key file and
 | 
						|
             print to stdout the key in one of the formats specified by the -m
 | 
						|
             option.  The default export format is M-bM-^@M-^\RFC4716M-bM-^@M-^].  This option
 | 
						|
             allows exporting OpenSSH keys for use by other programs,
 | 
						|
             including several commercial SSH implementations.
 | 
						|
 | 
						|
     -F hostname
 | 
						|
             Search for the specified hostname in a known_hosts file, listing
 | 
						|
             any occurrences found.  This option is useful to find hashed host
 | 
						|
             names or addresses and may also be used in conjunction with the
 | 
						|
             -H option to print found keys in a hashed format.
 | 
						|
 | 
						|
     -f filename
 | 
						|
             Specifies the filename of the key file.
 | 
						|
 | 
						|
     -G output_file
 | 
						|
             Generate candidate primes for DH-GEX.  These primes must be
 | 
						|
             screened for safety (using the -T option) before use.
 | 
						|
 | 
						|
     -g      Use generic DNS format when printing fingerprint resource records
 | 
						|
             using the -r command.
 | 
						|
 | 
						|
     -H      Hash a known_hosts file.  This replaces all hostnames and
 | 
						|
             addresses with hashed representations within the specified file;
 | 
						|
             the original content is moved to a file with a .old suffix.
 | 
						|
             These hashes may be used normally by ssh and sshd, but they do
 | 
						|
             not reveal identifying information should the file's contents be
 | 
						|
             disclosed.  This option will not modify existing hashed hostnames
 | 
						|
             and is therefore safe to use on files that mix hashed and non-
 | 
						|
             hashed names.
 | 
						|
 | 
						|
     -h      When signing a key, create a host certificate instead of a user
 | 
						|
             certificate.  Please see the CERTIFICATES section for details.
 | 
						|
 | 
						|
     -I certificate_identity
 | 
						|
             Specify the key identity when signing a public key.  Please see
 | 
						|
             the CERTIFICATES section for details.
 | 
						|
 | 
						|
     -i      This option will read an unencrypted private (or public) key file
 | 
						|
             in the format specified by the -m option and print an OpenSSH
 | 
						|
             compatible private (or public) key to stdout.  This option allows
 | 
						|
             importing keys from other software, including several commercial
 | 
						|
             SSH implementations.  The default import format is M-bM-^@M-^\RFC4716M-bM-^@M-^].
 | 
						|
 | 
						|
     -J num_lines
 | 
						|
             Exit after screening the specified number of lines while
 | 
						|
             performing DH candidate screening using the -T option.
 | 
						|
 | 
						|
     -j start_line
 | 
						|
             Start screening at the specified line number while performing DH
 | 
						|
             candidate screening using the -T option.
 | 
						|
 | 
						|
     -K checkpt
 | 
						|
             Write the last line processed to the file checkpt while
 | 
						|
             performing DH candidate screening using the -T option.  This will
 | 
						|
             be used to skip lines in the input file that have already been
 | 
						|
             processed if the job is restarted.
 | 
						|
 | 
						|
     -k      Generate a KRL file.  In this mode, ssh-keygen will generate a
 | 
						|
             KRL file at the location specified via the -f flag that revokes
 | 
						|
             every key or certificate presented on the command line.
 | 
						|
             Keys/certificates to be revoked may be specified by public key
 | 
						|
             file or using the format described in the KEY REVOCATION LISTS
 | 
						|
             section.
 | 
						|
 | 
						|
     -L      Prints the contents of a certificate.
 | 
						|
 | 
						|
     -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.  If
 | 
						|
             combined with -v, an ASCII art representation of the key is
 | 
						|
             supplied with the fingerprint.
 | 
						|
 | 
						|
     -M memory
 | 
						|
             Specify the amount of memory to use (in megabytes) when
 | 
						|
             generating candidate moduli for DH-GEX.
 | 
						|
 | 
						|
     -m key_format
 | 
						|
             Specify a key format for the -i (import) or -e (export)
 | 
						|
             conversion options.  The supported key formats are: M-bM-^@M-^\RFC4716M-bM-^@M-^]
 | 
						|
             (RFC 4716/SSH2 public or private key), M-bM-^@M-^\PKCS8M-bM-^@M-^] (PEM PKCS8 public
 | 
						|
             key) or M-bM-^@M-^\PEMM-bM-^@M-^] (PEM public key).  The default conversion format is
 | 
						|
             M-bM-^@M-^\RFC4716M-bM-^@M-^].
 | 
						|
 | 
						|
     -N new_passphrase
 | 
						|
             Provides the new passphrase.
 | 
						|
 | 
						|
     -n principals
 | 
						|
             Specify one or more principals (user or host names) to be
 | 
						|
             included in a certificate when signing a key.  Multiple
 | 
						|
             principals may be specified, separated by commas.  Please see the
 | 
						|
             CERTIFICATES section for details.
 | 
						|
 | 
						|
     -O option
 | 
						|
             Specify a certificate option when signing a key.  This option may
 | 
						|
             be specified multiple times.  Please see the CERTIFICATES section
 | 
						|
             for details.  The options that are valid for user certificates
 | 
						|
             are:
 | 
						|
 | 
						|
             clear   Clear all enabled permissions.  This is useful for
 | 
						|
                     clearing the default set of permissions so permissions
 | 
						|
                     may be added individually.
 | 
						|
 | 
						|
             force-command=command
 | 
						|
                     Forces the execution of command instead of any shell or
 | 
						|
                     command specified by the user when the certificate is
 | 
						|
                     used for authentication.
 | 
						|
 | 
						|
             no-agent-forwarding
 | 
						|
                     Disable ssh-agent(1) forwarding (permitted by default).
 | 
						|
 | 
						|
             no-port-forwarding
 | 
						|
                     Disable port forwarding (permitted by default).
 | 
						|
 | 
						|
             no-pty  Disable PTY allocation (permitted by default).
 | 
						|
 | 
						|
             no-user-rc
 | 
						|
                     Disable execution of ~/.ssh/rc by sshd(8) (permitted by
 | 
						|
                     default).
 | 
						|
 | 
						|
             no-x11-forwarding
 | 
						|
                     Disable X11 forwarding (permitted by default).
 | 
						|
 | 
						|
             permit-agent-forwarding
 | 
						|
                     Allows ssh-agent(1) forwarding.
 | 
						|
 | 
						|
             permit-port-forwarding
 | 
						|
                     Allows port forwarding.
 | 
						|
 | 
						|
             permit-pty
 | 
						|
                     Allows PTY allocation.
 | 
						|
 | 
						|
             permit-user-rc
 | 
						|
                     Allows execution of ~/.ssh/rc by sshd(8).
 | 
						|
 | 
						|
             permit-x11-forwarding
 | 
						|
                     Allows X11 forwarding.
 | 
						|
 | 
						|
             source-address=address_list
 | 
						|
                     Restrict the source addresses from which the certificate
 | 
						|
                     is considered valid.  The address_list is a comma-
 | 
						|
                     separated list of one or more address/netmask pairs in
 | 
						|
                     CIDR format.
 | 
						|
 | 
						|
             At present, no options are valid for host keys.
 | 
						|
 | 
						|
     -o      Causes ssh-keygen to save SSH protocol 2 private keys using the
 | 
						|
             new OpenSSH format rather than the more compatible PEM format.
 | 
						|
             The new format has increased resistance to brute-force password
 | 
						|
             cracking but is not supported by versions of OpenSSH prior to
 | 
						|
             6.5.  Ed25519 keys always use the new private key format.
 | 
						|
 | 
						|
     -P passphrase
 | 
						|
             Provides the (old) passphrase.
 | 
						|
 | 
						|
     -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      Test whether keys have been revoked in a KRL.
 | 
						|
 | 
						|
     -q      Silence ssh-keygen.
 | 
						|
 | 
						|
     -R hostname
 | 
						|
             Removes all keys belonging to hostname from a known_hosts file.
 | 
						|
             This option is useful to delete hashed hosts (see the -H option
 | 
						|
             above).
 | 
						|
 | 
						|
     -r hostname
 | 
						|
             Print the SSHFP fingerprint resource record named hostname for
 | 
						|
             the specified public key file.
 | 
						|
 | 
						|
     -S start
 | 
						|
             Specify start point (in hex) when generating candidate moduli for
 | 
						|
             DH-GEX.
 | 
						|
 | 
						|
     -s ca_key
 | 
						|
             Certify (sign) a public key using the specified CA key.  Please
 | 
						|
             see the CERTIFICATES section for details.
 | 
						|
 | 
						|
             When generating a KRL, -s specifies a path to a CA public key
 | 
						|
             file used to revoke certificates directly by key ID or serial
 | 
						|
             number.  See the KEY REVOCATION LISTS section for details.
 | 
						|
 | 
						|
     -T output_file
 | 
						|
             Test DH group exchange candidate primes (generated using the -G
 | 
						|
             option) for safety.
 | 
						|
 | 
						|
     -t dsa | ecdsa | ed25519 | rsa | rsa1
 | 
						|
             Specifies the type of key to create.  The possible values are
 | 
						|
             M-bM-^@M-^\rsa1M-bM-^@M-^] for protocol version 1 and M-bM-^@M-^\dsaM-bM-^@M-^], M-bM-^@M-^\ecdsaM-bM-^@M-^], M-bM-^@M-^\ed25519M-bM-^@M-^], or
 | 
						|
             M-bM-^@M-^\rsaM-bM-^@M-^] for protocol version 2.
 | 
						|
 | 
						|
     -u      Update a KRL.  When specified with -k, keys listed via the
 | 
						|
             command line are added to the existing KRL rather than a new KRL
 | 
						|
             being created.
 | 
						|
 | 
						|
     -V validity_interval
 | 
						|
             Specify a validity interval when signing a certificate.  A
 | 
						|
             validity interval may consist of a single time, indicating that
 | 
						|
             the certificate is valid beginning now and expiring at that time,
 | 
						|
             or may consist of two times separated by a colon to indicate an
 | 
						|
             explicit time interval.  The start time may be specified as a
 | 
						|
             date in YYYYMMDD format, a time in YYYYMMDDHHMMSS format or a
 | 
						|
             relative time (to the current time) consisting of a minus sign
 | 
						|
             followed by a relative time in the format described in the TIME
 | 
						|
             FORMATS section of sshd_config(5).  The end time may be specified
 | 
						|
             as a YYYYMMDD date, a YYYYMMDDHHMMSS time or a relative time
 | 
						|
             starting with a plus character.
 | 
						|
 | 
						|
             For example: M-bM-^@M-^\+52w1dM-bM-^@M-^] (valid from now to 52 weeks and one day
 | 
						|
             from now), M-bM-^@M-^\-4w:+4wM-bM-^@M-^] (valid from four weeks ago to four weeks
 | 
						|
             from now), M-bM-^@M-^\20100101123000:20110101123000M-bM-^@M-^] (valid from 12:30 PM,
 | 
						|
             January 1st, 2010 to 12:30 PM, January 1st, 2011), M-bM-^@M-^\-1d:20110101M-bM-^@M-^]
 | 
						|
             (valid from yesterday to midnight, January 1st, 2011).
 | 
						|
 | 
						|
     -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.
 | 
						|
 | 
						|
     -W generator
 | 
						|
             Specify desired generator when testing candidate moduli for DH-
 | 
						|
             GEX.
 | 
						|
 | 
						|
     -y      This option will read a private OpenSSH format file and print an
 | 
						|
             OpenSSH public key to stdout.
 | 
						|
 | 
						|
     -z serial_number
 | 
						|
             Specifies a serial number to be embedded in the certificate to
 | 
						|
             distinguish this certificate from others from the same CA.  The
 | 
						|
             default serial number is zero.
 | 
						|
 | 
						|
             When generating a KRL, the -z flag is used to specify a KRL
 | 
						|
             version number.
 | 
						|
 | 
						|
MODULI GENERATION
 | 
						|
     ssh-keygen may be used to generate groups for the Diffie-Hellman 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 screened 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.
 | 
						|
 | 
						|
CERTIFICATES
 | 
						|
     ssh-keygen supports signing of keys to produce certificates that may be
 | 
						|
     used for user or host authentication.  Certificates consist of a public
 | 
						|
     key, some identity information, zero or more principal (user or host)
 | 
						|
     names and a set of options that are signed by a Certification Authority
 | 
						|
     (CA) key.  Clients or servers may then trust only the CA key and verify
 | 
						|
     its signature on a certificate rather than trusting many user/host keys.
 | 
						|
     Note that OpenSSH certificates are a different, and much simpler, format
 | 
						|
     to the X.509 certificates used in ssl(8).
 | 
						|
 | 
						|
     ssh-keygen supports two types of certificates: user and host.  User
 | 
						|
     certificates authenticate users to servers, whereas host certificates
 | 
						|
     authenticate server hosts to users.  To generate a user certificate:
 | 
						|
 | 
						|
           $ ssh-keygen -s /path/to/ca_key -I key_id /path/to/user_key.pub
 | 
						|
 | 
						|
     The resultant certificate will be placed in /path/to/user_key-cert.pub.
 | 
						|
     A host certificate requires the -h option:
 | 
						|
 | 
						|
           $ ssh-keygen -s /path/to/ca_key -I key_id -h /path/to/host_key.pub
 | 
						|
 | 
						|
     The host certificate will be output to /path/to/host_key-cert.pub.
 | 
						|
 | 
						|
     It is possible to sign using a CA key stored in a PKCS#11 token by
 | 
						|
     providing the token library using -D and identifying the CA key by
 | 
						|
     providing its public half as an argument to -s:
 | 
						|
 | 
						|
           $ ssh-keygen -s ca_key.pub -D libpkcs11.so -I key_id user_key.pub
 | 
						|
 | 
						|
     In all cases, key_id is a "key identifier" that is logged by the server
 | 
						|
     when the certificate is used for authentication.
 | 
						|
 | 
						|
     Certificates may be limited to be valid for a set of principal
 | 
						|
     (user/host) names.  By default, generated certificates are valid for all
 | 
						|
     users or hosts.  To generate a certificate for a specified set of
 | 
						|
     principals:
 | 
						|
 | 
						|
           $ ssh-keygen -s ca_key -I key_id -n user1,user2 user_key.pub
 | 
						|
           $ ssh-keygen -s ca_key -I key_id -h -n host.domain host_key.pub
 | 
						|
 | 
						|
     Additional limitations on the validity and use of user certificates may
 | 
						|
     be specified through certificate options.  A certificate option may
 | 
						|
     disable features of the SSH session, may be valid only when presented
 | 
						|
     from particular source addresses or may force the use of a specific
 | 
						|
     command.  For a list of valid certificate options, see the documentation
 | 
						|
     for the -O option above.
 | 
						|
 | 
						|
     Finally, certificates may be defined with a validity lifetime.  The -V
 | 
						|
     option allows specification of certificate start and end times.  A
 | 
						|
     certificate that is presented at a time outside this range will not be
 | 
						|
     considered valid.  By default, certificates are valid from UNIX Epoch to
 | 
						|
     the distant future.
 | 
						|
 | 
						|
     For certificates to be used for user or host authentication, the CA
 | 
						|
     public key must be trusted by sshd(8) or ssh(1).  Please refer to those
 | 
						|
     manual pages for details.
 | 
						|
 | 
						|
KEY REVOCATION LISTS
 | 
						|
     ssh-keygen is able to manage OpenSSH format Key Revocation Lists (KRLs).
 | 
						|
     These binary files specify keys or certificates to be revoked using a
 | 
						|
     compact format, taking as little as one bit per certificate if they are
 | 
						|
     being revoked by serial number.
 | 
						|
 | 
						|
     KRLs may be generated using the -k flag.  This option reads one or more
 | 
						|
     files from the command line and generates a new KRL.  The files may
 | 
						|
     either contain a KRL specification (see below) or public keys, listed one
 | 
						|
     per line.  Plain public keys are revoked by listing their hash or
 | 
						|
     contents in the KRL and certificates revoked by serial number or key ID
 | 
						|
     (if the serial is zero or not available).
 | 
						|
 | 
						|
     Revoking keys using a KRL specification offers explicit control over the
 | 
						|
     types of record used to revoke keys and may be used to directly revoke
 | 
						|
     certificates by serial number or key ID without having the complete
 | 
						|
     original certificate on hand.  A KRL specification consists of lines
 | 
						|
     containing one of the following directives followed by a colon and some
 | 
						|
     directive-specific information.
 | 
						|
 | 
						|
     serial: serial_number[-serial_number]
 | 
						|
             Revokes a certificate with the specified serial number.  Serial
 | 
						|
             numbers are 64-bit values, not including zero and may be
 | 
						|
             expressed in decimal, hex or octal.  If two serial numbers are
 | 
						|
             specified separated by a hyphen, then the range of serial numbers
 | 
						|
             including and between each is revoked.  The CA key must have been
 | 
						|
             specified on the ssh-keygen command line using the -s option.
 | 
						|
 | 
						|
     id: key_id
 | 
						|
             Revokes a certificate with the specified key ID string.  The CA
 | 
						|
             key must have been specified on the ssh-keygen command line using
 | 
						|
             the -s option.
 | 
						|
 | 
						|
     key: public_key
 | 
						|
             Revokes the specified key.  If a certificate is listed, then it
 | 
						|
             is revoked as a plain public key.
 | 
						|
 | 
						|
     sha1: public_key
 | 
						|
             Revokes the specified key by its SHA1 hash.
 | 
						|
 | 
						|
     KRLs may be updated using the -u flag in addition to -k.  When this
 | 
						|
     option is specified, keys listed via the command line are merged into the
 | 
						|
     KRL, adding to those already there.
 | 
						|
 | 
						|
     It is also possible, given a KRL, to test whether it revokes a particular
 | 
						|
     key (or keys).  The -Q flag will query an existing KRL, testing each key
 | 
						|
     specified on the commandline.  If any key listed on the command line has
 | 
						|
     been revoked (or an error encountered) then ssh-keygen will exit with a
 | 
						|
     non-zero exit status.  A zero exit status will only be returned if no key
 | 
						|
     was revoked.
 | 
						|
 | 
						|
FILES
 | 
						|
     ~/.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.
 | 
						|
 | 
						|
     ~/.ssh/identity.pub
 | 
						|
             Contains the protocol version 1 RSA public key for
 | 
						|
             authentication.  The contents of this file should be added to
 | 
						|
             ~/.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.
 | 
						|
 | 
						|
     ~/.ssh/id_dsa
 | 
						|
     ~/.ssh/id_ecdsa
 | 
						|
     ~/.ssh/id_ed25519
 | 
						|
     ~/.ssh/id_rsa
 | 
						|
             Contains the protocol version 2 DSA, ECDSA, Ed25519 or 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 128-bit AES.  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.
 | 
						|
 | 
						|
     ~/.ssh/id_dsa.pub
 | 
						|
     ~/.ssh/id_ecdsa.pub
 | 
						|
     ~/.ssh/id_ed25519.pub
 | 
						|
     ~/.ssh/id_rsa.pub
 | 
						|
             Contains the protocol version 2 DSA, ECDSA, Ed25519 or RSA public
 | 
						|
             key for authentication.  The contents of this file should be
 | 
						|
             added to ~/.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).
 | 
						|
 | 
						|
SEE ALSO
 | 
						|
     ssh(1), ssh-add(1), ssh-agent(1), moduli(5), sshd(8)
 | 
						|
 | 
						|
     The Secure Shell (SSH) Public Key File Format, RFC 4716, 2006.
 | 
						|
 | 
						|
AUTHORS
 | 
						|
     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 5.8                     August 20, 2015                    OpenBSD 5.8
 |