【 Linux学习】SSH连接时出现Host key verification failed的原因及解决方法以及ssh-keygen命令的用法_host key verification failed

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

-b bits Number of bits in the key to create.
-C comment Provide new comment.
-c Change comment in private and public key files.
-D pkcs11 Download public key from pkcs11 token.
-e Export OpenSSH to foreign format key file.
-F hostname Find hostname in known hosts file.
-f filename Filename of the key file.
-G file Generate candidates for DH-GEX moduli.
-g Use generic DNS resource record format.
-H Hash names in known_hosts file.
-h Generate host certificate instead of a user certificate.
-I key_id Key identifier to include in certificate.
-i Import foreign format to OpenSSH key file.
-J number Screen this number of moduli lines.
-j number Start screening moduli at specified line.
-K checkpt Write checkpoints to this file.
-k Generate a KRL file.
-L Print the contents of a certificate.
-l Show fingerprint of key file.
-M memory Amount of memory (MB) to use for generating DH-GEX moduli.
-m key_fmt Conversion format for -e/-i (PEM|PKCS8|RFC4716).
-N phrase Provide new passphrase.
-n name,… User/host principal names to include in certificate
-O option Specify a certificate option.
-o Enforce new private key format.
-P phrase Provide old passphrase.
-p Change passphrase of private key file.
-Q Test whether key(s) are revoked in KRL.
-q Quiet.
-R hostname Remove host from known_hosts file.
-r hostname Print DNS resource record.
-S start Start point (hex) for generating DH-GEX moduli.
-s ca_key Certify keys with CA key.
-T file Screen candidates for DH-GEX moduli.
-t type Specify type of key to create.
-u Update KRL rather than creating a new one.
-V from:to Specify certificate validity interval.
-v Verbose.
-W gen Generator to use for generating DH-GEX moduli.
-y Read private key file and print public key.
-Z cipher Specify a cipher for new private key format.
-z serial Specify a serial number.
[root@localhost ~]#


使用man命令查看下ssh-keygen命令的详细用法,如下所示:


![在这里插入图片描述](https://img-blog.csdn.net/20181017190736778?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDQ2MjgyNDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)



SSH-KEYGEN(1) BSD General Commands Manual SSH-KEYGEN(1)

NAME
ssh-keygen — authentication key generation, management and conversion

SYNOPSIS
ssh-keygen [-q] [-b bits] [-t type] [-N new_passphrase] [-C comment] [-f output_keyfile]
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
ssh-keygen -i [-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 [-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 “.pub” appended.  The
 program also asks for a passphrase.  The passphrase may be empty to indicate no passphrase (host keys must have an empty passphrase), or it may be a string of arbitrary length.  A
 passphrase is similar to a password, except it can be a phrase with a series of words, punctuation, numbers, whitespace, or any string of characters you want.  Good passphrases
 are 10-30 characters long, are not simple sentences or otherwise easily guessable (English prose has only 1-2 bits of entropy per character, and provides very bad passphrases),
 and contain a mix of upper and lowercase letters, numbers, and non-alphanumeric characters.  The passphrase can be changed later by using the -p option.

 There is no way to recover a lost passphrase.  If the passphrase is lost or forgotten, a new key must be generated and 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 what‐
 ever is useful.  The comment is initialized to “user@host” when the key is created, but can be changed using the -c option.

 After a key is generated, instructions below detail where the keys should be placed to be activated.

 The options are as follows:

 -A      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 func‐
         tion) 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 768 bits and the default is 2048 bits.  Generally, 2048 bits is considered suffi‐
         cient.  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      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
         “RFC4716”.  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 std‐
         out.

 -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.  This option allows importing keys from other software, including several commercial SSH implementations.  The default
         import format is “RFC4716”.

 -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: “RFC4716” (RFC 4716/SSH2 public or private key), “PKCS8” (PEM
         PKCS8 public key) or “PEM” (PEM public key).  The default conversion format is “RFC4716”.

 -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 type
         Specifies the type of key to create.  The possible values are “rsa1” for protocol version 1 and “dsa”, “ecdsa”, “ed25519”, or “rsa” 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 for‐
         mat, 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: “+52w1d” (valid from now to 52 weeks and one day from now), “-4w:+4w” (valid from four weeks ago to four weeks from now), “20100101123000:20110101123000”
         (valid from 12:30 PM, January 1st, 2010 to 12:30 PM, January 1st, 2011), “-1d:20110101” (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 ver‐
         bosity.  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 gen‐
erated 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/ssh/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 ver‐
ify 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 host_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 user_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/ssh/moduli
         Contains Diffie-Hellman groups used for DH-GEX.  The file format is described in moduli(5).

ENVIRONMENT
SSH_USE_STRONG_RNG
The reseeding of the OpenSSL random generator is usually done from /dev/urandom. If the SSH_USE_STRONG_RNG environment variable is set to value other than 0 the OpenSSL
random generator is reseeded from /dev/random. The number of bytes read is defined by the SSH_USE_STRONG_RNG value. Minimum is 14 bytes. This setting is not recommended
on the computers without the hardware random generator because insufficient entropy causes the connection to be blocked until enough entropy is available.

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.

BSD October 17, 2018 BSD
Manual page ssh-keygen(1) line 342/381 (END) (press h for help or q to quit)



> 
> 下面讲解下刚才的指导说明书,大致翻译如下所示
> 
> 
> 


SSH-KEYGEN(1)BSD通用命令手册SSH-KEYGEN(1)


### 名字


ssh-keygen - 认证密钥生成、管理和转换


### 概要



ssh-keygen [-q] [-b bits] [-t type] [-N new_passphrase] [-C comment] [-f output_keyfile]
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
ssh-keygen -i [-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 [-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 principalals] [-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]文件…
ssh-keygen -Q -f krl_file文件…


### 描述



> 
> ssh-keygen生成,管理和转换ssh(1)的身份验证密钥。 ssh-keygen可以创建RSA密钥,供SSH协议版本1和DSA,ECDSA,ED25519或RSA密钥使用  
>  供SSH协议版本2使用。要生成的密钥类型使用-t选项指定。如果在没有任何参数的情况下调用,ssh-keygen将生成一个RSA密钥以供使用在SSH协议2连接。
> 
> 
> 



> 
> ssh-keygen还用于生成用于Diffie-Hellman组交换(DH-GEX)的组。有关详细信息,请参阅**MODULI GENERATION**部分。
> 
> 
> 



> 
> 最后,ssh-keygen可用于生成和更新密钥撤销列表,并测试给定密钥是否已被一个撤销。请参阅**KEY REVOCATION LISTS**部分细节。
> 
> 
> 



> 
> 通常,每个希望使用SSH和公钥认证的用户运行一次以在〜/ .ssh / identity,〜/ .ssh / id\_dsa,〜/ .ssh / id\_ecdsa中创建认证密钥,  
>  `〜/ .ssh / id_ed25519`或`〜/ .ssh / id_rsa`。此外,系统管理员可以使用它来生成主机密钥,如/ etc / rc中所示。  
>  通常,该程序生成密钥并请求存储私钥的文件。公钥存储在具有相同名称但附加“.pub”的文件中。该程序还要求密码。密码短语可以为空以表示没有密码短语(主机密钥必须具有空密码短语),或者它可以是任意长度的字符串。一个密码类似于密码,除了它可以是包含一系列单词,标点符号,数字,空格或任何所需字符串的短语。好的密码是10-30个字符长,不是简单的句子或其他容易猜测(英文散文每个字符只有1-2位熵,并提供非常糟糕的密码短语),并包含大写和小写字母,数字和非字母数字字符的混合。稍后可以使用-p选项更改密码。
> 
> 
> 



> 
> 没有办法恢复丢失的密码短语。如果密码丢失或遗忘,则必须生成新密钥并将相应的公钥复制到其他计算机。
> 
> 
> 



> 
> 对于RSA1密钥,密钥文件中还有一个注释字段,仅为方便用户帮助识别密钥。 评论可以告诉关键字是什么,或者什么是有用的。 创建密钥时,注释将初始化为“user @ host”,但可以使用-c选项进行更改。
> 
> 
> 



> 
> 生成密钥后,下面的说明详细说明了应该激活密钥的位置。
> 
> 
> 


选项如下:


* -A  
 对于不存在主机密钥的每种密钥类型(rsa1,rsa,dsa,ecdsa和ed25519),使用默认密钥文件路径(空密码,生成密码)生成主机密钥,密钥类型的默认位和默认注释。 / etc / rc使用它来生成新的主机密钥。
* -a rounds  
 保存新格式的私钥(即设置-o标志时的ed25519密钥或任何SSH协议2密钥)时,此选项指定使用的KDF(密钥派生函数)轮次数。 数字越大,密码短语验证越慢,并且对强力密码破解的抵抗力越强(如果密钥被盗)。


筛选DH-GEX候选者时(使用-T命令)。 此选项指定要执行的素性测试的数量。


* -B  
 显示指定的私钥或公钥文件的bubblebabble摘要。
* -b bits  
 指定要创建的键中的位数。 对于RSA密钥,最小大小为768位,默认值为2048位。 通常,2048位被认为是足够的。 DSA密钥必须是FIPS 186-2指定的1024位。 对于ECDSA密钥,-b标志通过从三个椭圆曲线中的一个中选择来确定密钥长度大小:256,384或521位。 尝试对ECDSA密钥使用除这三个值之外的位长度将失败。 ED25519键具有固定长度,-b标志将具有被忽略
* -C comment  
 提供新评论。
* -c  
 请求更改私钥和公钥文件中的注释。 此操作仅支持RSA1密钥。 程序将提示输入包含的文件私钥,密钥(如果密钥有密码)和新评论。
* -D pkcs11  
 下载PKCS#11共享库pkcs11提供的RSA公钥。 与-s结合使用时,此选项表示CA密钥驻留在PKCS#11中令牌(有关详细信息,请参阅证书部分)。
* -e  
 此选项将读取私有或公共OpenSSH密钥文件,并以-m选项指定的格式之一打印到stdout密钥。 默认导出格式为  
 “采用RFC4716”。 此选项允许导出OpenSSH密钥以供其他程序使用,包括几个商业SSH实现。
* -F hostname  
 在known\_hosts文件中搜索指定的主机名,列出找到的所有匹配项。 此选项对于查找散列主机名或地址很有用,也可以使用与-H选项结合使用,以散列格式打印找到的键。
* -f filename  
 指定密钥文件的文件名。
* -G output\_file  
 为DH-GEX生成候选素数。 在使用之前,必须对这些质数进行筛选以确保安全性(使用-T选项)。
* -g  
 使用-r命令打印指纹资源记录时使用通用DNS格式。
* -H  
 哈希一个known\_hosts文件。 这将替换指定文件中具有散列表示的所有主机名和地址; 将原始内容移动到带有的文件 .old后缀。 这些哈希值通常可以由ssh和sshd使用,但如果文件的内容被公开,它们不会显示识别信息。 这个选项会不修改现有的散列主机名,因此可以安全地用于混合散列和非散列名称的文件。
* -h  
 签名密钥时,请创建主机证书而不是用户证书。有关详细信息,请参阅证书部分。
* -I certificate\_identity  
 在签署公钥时指定密钥标识。有关详细信息,请参阅证书部分。
* -i  
 此选项将以-m选项指定的格式读取未加密的私有(或公共)密钥文件,并将与OpenSSH兼容的私有(或公共)密钥打印到stdout。
* -J num\_lines  
 在使用-T选项执行DH候选筛选时筛选指定数量的行后退出。
* -j start\_line  
 使用-T选项在执行DH候选筛选时,以指定的行号开始筛选。
* -K检查  
 在使用-T选项执行DH候选筛选时,将处理的最后一行写入文件checkpt。 这将用于跳过输入文件中已重新启动作业时已处理的行。 此选项允许从其他软件导入密钥,包括几个商业SSH实现。 默认值导入格式为“RFC4716”。
* -k  
 生成KRL文件。 在此模式下,ssh-keygen将在通过-f标志指定的位置生成KRL文件,该文件将撤消命令行上显示的每个密钥或证书。 要撤销的密钥/证书可以通过公钥文件或使用KEY REVOCATION LISTS部分中描述的格式来指定。
* -L  
 打印证书的内容。
* -l  
 显示指定公钥文件的指纹。还支持专用RSA1密钥。对于RSA和DSA密钥,ssh-keygen尝试查找匹配的公钥文件和  
 打印其指纹。如果与-v结合使用,则随指纹提供密钥的ASCII艺术表示。
* -M memory  
 在为DH-GEX生成候选模数时,指定要使用的内存量(以兆字节为单位)。
* -m key\_format  
 指定-i(导入)或-e(导出)转换选项的密钥格式。支持的密钥格式为:“RFC4716”(RFC 4716 / SSH2公钥或私钥),“PKCS8”(PEM)PKCS8公钥)或“PEM”(PEM公钥)。默认转换格式为“RFC4716”。
* -N new\_passphrase  
 提供新密码。
* -n principals  
 签署密钥时,指定要包含在证书中的一个或多个主体(用户名或主机名)。可以指定多个主体,用逗号分隔。请有关详细信息,请参阅**CERTIFICATES**部分。
* -O option  
 签署密钥时指定证书选项。可以多次指定此选项。有关详细信息,请参阅证书部分。选项是



> 
> clear  
>  清除所有已启用的权限这对于清除默认权限集非常有用,因此可以单独添加权限。
> 
> 
> 



> 
> force-command=command  
>  当证书用于身份验证时,强制执行命令而不是用户指定的任何shell或命令。
> 
> 
> 



> 
> no-agent-forwarding  
>  禁用ssh-agent(1)转发(默认允许)。
> 
> 
> 



> 
> no-port-forwarding  
>  禁用端口转发(默认允许)。
> 
> 
> 



> 
> no-pty  
>  禁用PTY分配(默认允许)。
> 
> 
> 



> 
> no-user-rc  
>  禁用sshd(8)执行〜/ .ssh / rc(默认允许)。
> 
> 
> 



> 
> no-x11-forwarding  
>  禁用X11转发(默认允许)。
> 
> 
> 



> 
> permit-agent-forwarding  
>  允许ssh-agent(1)转发。
> 
> 
> 



> 
> permit-port-forwarding  
>  允许端口转发。


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值