ssh-keygen(1) - 为 ssh 生成、管理和转换认证密钥
用于为“ssh”生成、管理和转换认证密钥,它支持 RSA 和 DSA 两种认证密钥。ssh-keygen 实用程序用于为 ssh(1) 生成、管理和转换验证密钥。ssh-keygen 可以创建供 SSH 协议版本 1 使用的 RSA 密钥,以及供 SSH 协议版本 2 使用的 RSA 或 DSA 密钥。生成的密钥类型使用 –t 选项指定。ssh-keygen 还可以生成指纹或从指定为 PKCS#11 URI 的 X.509v3 证书转换公钥。
通常,希望将 SSH 与 RSA 或 DSA 验证结合使用的每个用户应运行一次此实用程序,以便在 $HOME/.ssh/identity
, $HOME/.ssh/id_dsa
或 $HOME/.ssh/id_rsa
中创建验证密钥。系统管理员还可以使用此实用程序生成主机密钥。
通常,此程序会生成密钥并要求提供一个存储私钥的文件。公钥存储在附加了 “.pub” 扩展名的同名文件中。该程序还要求提供口令短语。口令短语可以为空,表示没有口令短语(主机密钥必须具有空口令短语),也可以为任意长度的字符串。好的口令短语长度在 10-30 个字符,不是简单的句子或其他容易猜到的句子,由大写字母、小写字母、数字和非字母数字字符组合而成。(普通英文句子中的每个字只有 1-2 位的熵,提供的口令短语非常差。)如果设置口令短语,则长度必须至少为 4 个字符。
之后可以使用 –p 选项更改口令短语。
无法恢复丢失的口令短语。如果丢失或忘记口令短语,您必须生成一个新密钥并将相应的公钥复制到其他计算机。
对于 RSA,密钥文件中还包含一个注释字段,该字段只是为了便于用户识别密钥。comment 字段可以说明密钥的用途或提供任何有用信息。创建密钥时,注释将初始化为 “user@host”,但可以使用 –c 选项进行更改。
密钥生成后,可以使用下面的详细说明了解应将密钥放在何处,以便激活密钥。
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 [-f input_keyfile | PKCS#11-URI]
ssh-keygen -e [-f input_keyfile]
ssh-keygen -y [-f input_keyfile]
ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
ssh-keygen -l [-f input_keyfile | PKCS#11-URI]
ssh-keygen -B [-f input_keyfile]
ssh-keygen -F hostname [-f known_hosts_file]
ssh-keygen -H [-f known_hosts_file]
ssh-keygen -R hostname [-f known_hosts_file]
选项
支持以下选项:
-b bits
指定要创建的密钥的位数。最小位数为 512 位。通常,2048 位足以满足安全需要。密钥大小超过该值并不会提高安全性,反而会降低速度。缺省值为 2048 位。
-B
显示指定的私钥或公钥文件的 bubblebabble 摘要。
-c
请求更改私钥和公钥文件中的注释。该程序会提示您提供包含私钥的文件、口令短语(如果密钥具有一个口令短语)以及新的注释
此选项仅适用于 rsa1 (SSHv1) 密钥。
-C comment
提供新注释。
-e
此选项读取 OpenSSH 私钥或公钥文件并将密钥以 “SECSH” 公钥文件格式输出到 stdout。此选项允许导出密钥供其他一些 SSH 实现使用。
-f
指定密钥文件的文件名。
-F
在 known_hosts 文件中搜索指定的 hostname,列出找到的任何匹配项。此选项可用于查找散列格式的主机名或地址,还可以与 –H 选项一起使用,以散列格式输出找到的密钥。
-H
对 known_hosts 文件执行散列计算。此选项使用散列形式替换指定文件内的所有主机名和地址。原始内容将移动到后缀为 .old 的文件中。这些散列值通常由 ssh 和 sshd 使用,即使文件内容被公开,这些散列值也并不会透露可识别的信息。此选项不会修改现有的散列主机名,因此可以放心地用于同时包含散列名称和非散列名称的文件。
-i
此选项以 SSH2 兼容格式读取未加密的私钥(或公钥)文件并将 OpenSSH 兼容的私钥(或公钥)输出到 stdout。ssh-keygen 还可读取 “SECSH” 公钥文件格式。此选项允许从其他一些 SSH 实现中导入密钥。
-l
显示指定的私钥或公钥文件的指纹。
-N new_passphrase
提供新口令短语。
-p
请求更改私钥文件的口令短语,而不创建新私钥。该程序会提示您提供包含私钥的文件、旧口令短语,并两次提示您输入新口令短语。
-P passphrase
提供(旧)口令短语。
-q
退出 ssh-keygen。
-t type
指定用于生成密钥的算法,其中 type 是 rsa、dsa 和 rsa1 中的一种。rsa1 类型仅用于 SSHv1 协议。
-R hostname
从 known_hosts 文件中删除属于 hostname 的所有密钥。此选项可用于删除散列主机。请参见 –H。
-x
已过时。已被 –e 选项取代。
-X
已过时。已被 –i 选项取代。
-y
此选项读取 OpenSSH 私钥格式文件并将 OpenSSH 公钥输出到 stdout。
-8
指定 ssh-keygen 生成 PKCS#8 格式的密钥。对于要生成的密钥,支持的类型为 rsa 或 dsa。
状态
将返回以下退出值
0 : 成功完成
1 : 出现错误
文件
$HOME/.ssh/identity
该文件包含用于 SSHv1 协议的 RSA 私钥。除了用户外,其他任何人均应无法读取此文件。生成密钥时可以指定密码短语;该密码短语用于使用 128 位 AES 对此文件的私有部分加密。ssh-keygen 并不自动访问此文件,此文件是作为私钥的缺省文件提供的。尝试登录时,sshd(1M) 将读取该文件。
$HOME/.ssh/identity.pub
该文件包含用于 SSHv1 协议的 RSA 公钥。应在登录时要使用 RSA 验证的所有计算机的 $HOME/.ssh/authorized_keys 中添加该文件的内容。不需要将该文件的内容保密。
$HOME/.ssh/id_dsa
$HOME/.ssh/id_rsa
这两个文件分别包含用于 SSHv2 协议的 DSA 私钥或 RSA 私钥。除了用户外,其他任何人均应无法读取这些文件。生成密钥时可能会指定口令短语;该口令短语用于对此文件的私钥部分加密(使用 3DES)
ssh-keygen 并不自动访问其中的任一文件,这两个文件是作为私钥的缺省文件提供的。尝试登录时,sshd(1M) 将读取其中的一个文件。
$HOME/.ssh/id_dsa.pub
$HOME/.ssh/id_rsa.pub
这些文件分别包含用于 SSHv2 协议的 DSA 公钥或 RSA 公钥。应在登录时要使用 DSA 或 RSA 验证的所有计算机的 $HOME/.ssh/authorized_keys 中分别添加这两个文件的内容。不需要将这些文件的内容保密。
说明
创建时间: 2023-01-15 00:28:00 , 最后编辑于 2023-12-04 16:17:00