ssh-keygen -t rsa详解

ssh-keygen

[-q] 安静模式

[-b bits] 位数

[-t dsa | ecdsa | ed25519 | rsa | rsa1] 加密算法

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

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

名称
     ssh-keygen —身份验证密钥的生成,管理和转换

概要
      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 ...

描述
     ssh-keygen生成,管理和转换认证密钥
     ssh(1)。ssh-keygen可以创建供SSH协议版本使用的密钥1
     和2.不应使用协议1,而仅将其用于支持
     旧版设备。它遭受了许多加密弱点和
     不支持协议2提供的许多高级功能。

     使用-t选项指定要生成的密钥的类型。如果
     在不带任何参数的情况下调用ssh-keygen会为
     在SSH协议2连接中使用。

     ssh-keygen还用于生成在Diffie-Hellman中使用的组
     群组交换(DH-GEX)。有关详细信息,请参见“模块生成”部分。

     最后,ssh-keygen可用于生成和更新密钥吊销
     列出并测试给定的密钥是否已被一个撤销。看到
     有关详细信息,请参见“关键撤销列表”部分。

     通常,每个希望将SSH与公钥身份验证一起使用的用户都会运行
     一次在〜/ .ssh / identity中创建身份验证密钥,
     〜/ .ssh / id_dsa,〜/ .ssh / id_ecdsa,〜/ .ssh / id_ed25519或〜/ .ssh / id_rsa。
     此外,系统管理员可以使用它来生成主机
     键,如/ etc / rc中所示。

     通常,此程序会生成密钥并要求在其中添加文件
     存储私钥。公钥存储在相同的文件中
     名称,但附加“ .pub”。该程序还要求输入密码。的
     密码短语可能为空,表示没有密码短语(主机密钥必须具有
     空密码短语),也可以是任意长度的字符串。一个
     密码短语类似于密码,除了它可以是带有
     一系列单词,标点,数字,空格或任何字符串
     您想要的演员。好的密码短语长度为10-30个字符,不是
     简单的句子或其他容易猜测的内容(英语散文仅
     每个字符1-2位熵,并提供非常糟糕的密码短语),
     并包含大小写字母,数字和非
     字母数字字符。稍后可以使用更改密码
     -p选项。

     无法恢复丢失的密码短语。如果密码丢失
     或忘记了,必须生成一个新密钥,并且相应的公共
     密钥已复制到其他计算机。

     对于RSA1密钥和以较新的OpenSSH格式存储的密钥,还存在
     密钥文件中的注释字段,仅用于方便用户
     帮助识别钥匙。该注释可以告诉您密钥的用途,或者
     任何有用的东西。注释被初始化为“ user @ host”。
     密钥已创建,但可以使用-c选项进行更改。

     生成密钥后,以下说明详细说明了密钥应在何处
     被放置为激活状态。

     选项如下:

     -A对于以下每种密钥类型(rsa1,rsa,dsa,ecdsa和ed25519)
             哪些主机密钥不存在,请使用
             默认密钥文件路径,空密码短语,
             密钥类型和默认注释。/ etc / rc使用它来生成
             吃了新的主机密钥。

     -一轮
             保存新格式的私钥(例如ed25519密钥或任何其他
             设置-o标志时使用SSH协议2密钥),此选项指定-
             fies使用的KDF(密钥派生功能)轮数。
             数字越大,密码验证越慢,并且
             增强对暴力破解密码的抵抗力(
             密钥被盗)。

             在筛选DH-GEX候选对象时(使用-T命令)。这个
             option指定要执行的素数测试的数量。

     -B显示指定私钥或公钥的冒泡摘要
             文件。

     -b位
             指定要创建的密钥中的位数。对于RSA密钥,
             最小大小为1024位,默认大小为2048位。根
             通常,认为2048位就足够了。DSA密钥必须为
             完全由FIPS 186-2指定的1024位。对于ECDSA密钥,
             -b标志通过从以下一项中选择来确定密钥长度
             三个椭圆曲线大小:256、384或521位。试图
             对ECDSA密钥使用这三个值以外的其他位长度
             失败。Ed25519键的长度是固定的,-b标志为
             忽略了。

     -C评论
             提供新的评论。

     -c请求更改私钥和公钥中的注释
             文件。仅RSA1密钥和密钥支持此操作
             以较新的OpenSSH格式存储。该程序将提示您
             包含私钥的文件,如果密码短语为
             键有一个,并用于新注释。

     -D pkcs11
             下载PKCS#11共享提供的RSA公钥
             库pkcs11。与-s组合使用时,此选项
             表示CA密钥位于PKCS#11令牌中(请参阅
             有关详细信息,请参见“证书”部分。

     -E Fingerprint_hash
             指定显示键指时使用的哈希算法-
             打印。有效选项为:“ md5”和“ sha256”。默认是
             “ sha256”。

     -e此选项将读取私有或公共的OpenSSH密钥文件,以及
             以-m指定的格式之一打印输出标准密钥
             选项。默认导出格式为“ RFC4716”。这个选项
             允许导出OpenSSH密钥以供其他程序使用,包括
             几种商业SSH实施。

     -F主机名
             在known_hosts文件中搜索指定的主机名,列出
             发现的任何事件。此选项对于查找散列主机很有用
             名称或地址,也可以与
             -H选项以散列格式打印找到的密钥。

     -f文件名
             指定密钥文件的文件名。

     -G output_file
             生成DH-GEX的候选素数。这些素数必须是
             使用前进行安全性筛选(使用-T选项)。

     -g打印指纹资源记录时使用通用DNS格式
             使用-r命令。

     -H哈希一个known_hosts文件。这将替换所有主机名并
             指定文件中带有哈希表示的地址;
             原始内容将移动到后缀为.old的文件中。
             ssh和sshd通常可以使用这些哈希,但是它们确实
             文件内容应不泄露识别信息
             披露。此选项不会修改现有的哈希主机名
             因此可以安全地用于混合了散列和非散列的文件
             哈希名称。

     -h签名密钥时,创建主机证书而不是用户
             证书。有关详细信息,请参见“证书”部分。

     -I certificate_identity
             在签署公共密钥时指定密钥身份。请参见
             有关详细信息,请参见“证书”部分。

     -i此选项将读取未加密的私有(或公共)密钥文件
             以-m选项指定的格式显示并打印OpenSSH
             兼容的stdout私钥(或公钥)。该选项允许
             从其他软件(包括几种商业软件)导入密钥
             SSH实施。默认导入格式为“ RFC4716”。

     -J num_lines
             执行时在筛选指定的行数后退出
             使用-T选项来筛选DH候选对象。

     -j start_line
             在执行DH时开始在指定的行号上进行筛选
             使用-T选项进行候选人筛选。

     -K checkpt
             执行时将最后处理的行写入文件checkpt
             使用-T选项来筛选DH候选对象。这会是
             用于跳过输入文件中已经过验证的行
             如果重新启动作业,则停止。

     -k生成KRL文件。在此模式下,ssh-keygen将生成一个
             通过-f标志指定的位置撤消的KRL文件
             命令行上显示的每个密钥或证书。
             可以通过公钥指定要撤销的密钥/证书
             文件或使用“密钥撤销列表”中描述的格式
             部分。

     -L打印一个或多个证书的内容。

     -l显示指定公钥文件的指纹。RSA1私钥
             也被支持。对于RSA和DSA密钥,ssh-keygen尝试
             找到匹配的公共密钥文件并打印其指纹。如果
             与-v结合使用,该键的可视化ASCII艺术表现形式为
             随附指纹。

     -M内存
             指定生成时要使用的内存量(以兆字节为单位)
             DH-GEX的候选模数。

     -m key_format
             为-i(导入)或-e(导出)转换指定密钥格式
             sion选项。支持的密钥格式为:“ RFC4716”(RFC
             4716 / SSH2公钥或私钥),“ PKCS8”(PEM PKCS8公钥)
             或“ PEM”(PEM公钥)。默认转换格式为
             “ RFC4716”。

     -N new_passphrase
             提供新的密码短语。

     -n主体
             指定一个或多个主体(用户或主机名)作为
             签名密钥时包含在证书中。多重原理
             可以指定好朋友,以逗号分隔。请看
             有关详细信息,请参见“证书”部分。

     -O选项
             签名密钥时指定证书选项。此选项可能
             被多次指定。请参阅“证书”部分
             有关详细信息。对用户证书有效的选项
             是:

             清除清除所有启用的权限。这对于清除-
                     设置默认的权限集,因此权限可能是
                     单独添加。

             强制命令=命令
                     强制执行命令而不是任何shell或
                     证书为用户指定的命令
                     用于身份验证。

             无代理转发
                     禁用ssh-agent(1)转发(默认情况下允许)。

             无端口转发
                     禁用端口转发(默认情况下允许)。

             no-pty禁用PTY分配(默认情况下允许)。

             无用户rc
                     禁止通过sshd(8)执行〜/ .ssh / rc(允许
                     默认)。

             没有x11转发
                     禁用X11转发(默认情况下允许)。

             许可代理转发
                     允许ssh-agent(1)转发。

             许可证端口转发
                     允许端口转发。

             许可
                     允许PTY分配。

             许可用户rc
                     允许sshd(8)执行〜/ .ssh / rc。

             许可x11转发
                     允许X11转发。

             源地址=地址列表
                     限制证书的源地址
                     被认为是有效的。address_list是逗号分隔的
                     CIDR中一个或多个地址/网络掩码对的额定列表
                     格式。

             目前,没有选项对主机密钥有效。

     -o使ssh-keygen使用新的OpenSSH for-保存私钥
             mat而不是更兼容的PEM格式。新格式
             增强了对暴力密码破解的抵抗力,但
             6.5之前的OpenSSH版本不支持。ED25519键
             始终使用新的私钥格式。

     -P密码
             提供(旧)密码短语。

     -p请求更改私钥文件的密码短语,而不是
             创建一个新的私钥。程序将提示您输入文件
             包含私钥,用于旧密码,两次用于
             新的密码短语。

     -Q测试密钥是否已在KRL中撤消。

     -q静默ssh-keygen。

     -R主机名
             从known_hosts文件中删除所有属于主机名的键。
             此选项对于删除散列主机很有用(请参阅-H选项
             以上)。

     -r主机名
             打印名为主机名的SSHFP指纹资源记录,用于
             指定的公共密钥文件。

     -S开始
             在生成候选模量时指定起点(以十六进制表示)
             DH-GEX。

     -s ca_key
             使用指定的CA密钥验证(签名)公共密钥。请
             有关详细信息,请参见“证书”部分。

             生成KRL时,-s指定CA公用密钥的路径
             用于通过密钥ID或序列号直接吊销证书的文件
             数。有关详细信息,请参见“密钥撤销列表”部分。

     -T输出文件
             测试DH组交换候选素数(使用-G生成
             选项)以确保安全。

     -t dsa | ecdsa | ed25519 | rsa | rsa1
             指定要创建的密钥的类型。可能的值为
             协议版本1的“ rsa1”和“ dsa”,“ ecdsa”,“ ed25519”或
             协议版本2的“ rsa”。

     -u更新KRL。当用-k指定时,键通过com‐列出
             要求行添加到现有的KRL中,而不是新的KRL中
             正在创建。

     -V有效性间隔
             指定签署证书时的有效间隔。一个有效的-
             间隔间隔可以包含一个时间,表示
             证书从现在开始有效,并在那个时间到期,或者
             可能包含两次,中间用冒号隔开,表示
             明确的时间间隔。开始时间可以指定为
             YYYYMMDD格式的日期,YYYYMMDDHHMMSS格式的时间或
             由减号组成的相对时间(相对于当前时间)
             后跟相对时间,格式为TIME中所述
             sshd_config(5)的FORMATS部分。结束时间可以指定
             作为YYYYMMDD日期,YYYYMMDDHHMMSS时间或相对时间
             以加号开头。

             例如:“ + 52w1d”(从现在起至52周零一天有效
             从现在开始),“-4w:+ 4w”(有效期从四周前到四周
             从现在开始),“ 20100101123000:20110101123000”(从12:30 PM开始有效,
             2010年1月1日至2011年1月1日下午12:30),“-1d:20110101”
             (有效期为昨天至2011年1月1日午夜)。

     -v详细模式。使ssh-keygen打印调试消息
             关于它的进展。这对于调试模数生成很有帮助
             tion。多个-v选项增加了详细程度。最大值
             是3。

     -W发电机
             在测试DH-的候选模数时指定所需的发生器
             GEX。

     -y此选项将读取私有的OpenSSH格式文件并打印
             OpenSSH公钥到标准输出。

     -z序列号
             指定要嵌入到证书中的序列号以
             将此证书与同一CA的其他证书区分开来。的
             默认序列号为零。

             生成KRL时,-z标志用于指定KRL版本-
             版本号。

模块生成
     ssh-keygen可用于为Diffie-Hellman组生成组
     交换(DH-GEX)协议。生成这些组分两个步骤
     过程:首先,使用快速但记忆力生成候选素数
     密集的过程。然后测试这些候选素数是否适合
     ity(CPU密集型进程)。

     使用-G选项执行素数的生成。所需
     素数的长度可以通过-b选项指定。例如:

           #ssh-keygen -G moduli-2048.candidates -b 2048

     默认情况下,素数搜索从所需的随机点开始
     长度范围。可以使用-S选项覆盖该选项,该选项指定-
     设定一个不同的起点(以十六进制表示)。

     生成一组候选人后,必须对其进行筛选
     适应性。可以使用-T选项执行此操作。在这种模式下
     ssh-keygen将从标准输入(或指定的文件)中读取候选对象
     使用-f选项)。例如:

           #ssh-keygen -T moduli-2048 -f moduli-2048.candidates

     默认情况下,每个候选人都将接受100次素养测试。
     可以使用-a选项覆盖它。DH生成器值将
     会自动选择要考虑的素数。如果具体
     需要生成器,可以使用-W选项请求生成器。有效
     生成器值为2、3和5。

     筛选的DH组可以安装在/ etc / ssh / moduli中。这很重要
     该文件包含一定范围的位长度的模,并且
     连接的两端共享公共模数。

证书
     ssh-keygen支持密钥签名以生成可能是
     用于用户或主机身份验证。证书由公众组成
     密钥,一些身份信息,零个或多个主体(用户或主机)
     证书颁发机构签名的名称和一组选项
     (CA)键。然后,客户端或服务器可能仅信任CA密钥并进行验证
     它在证书上的签名,而不是信任许多用户/主机密钥。
     请注意,OpenSSH证书是一种不同且更简单的格式
     ssl(8)中使用的X.509证书。

     ssh-keygen支持两种类型的证书:用户证书和主机证书。用户证书
     验证用户到服务器的身份,而主机证书
     向用户验证服务器主机。生成用户证书:

           $ ssh-keygen -s / path / to / ca_key -I key_id /path/to/user_key.pub

     生成的证书将放置在/path/to/user_key-cert.pub中。
     主机证书需要-h选项:

           $ ssh-keygen -s / path / to / ca_key -I key_id -h /path/to/host_key.pub

     主机证书将输出到/path/to/host_key-cert.pub。

     pro-可以使用存储在PKCS#11令牌中的CA密钥进行签名
     使用-D对令牌库进行虚拟化,并通过提供
     它的公共部分作为-s的参数:

           $ ssh-keygen -s ca_key.pub -D libpkcs11.so -I key_id user_key.pub

     在所有情况下,key_id是服务器记录的“密钥标识符”
     证书用于身份验证时。

     证书可能仅限于一套本金有效
     (用户/主机)名称。默认情况下,生成的证书对所有用户有效
     用户或主机。为指定的一组原则生成证书
     朋友:

           $ 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

     对用户证书的有效性和使用的其他限制可能
     通过证书选项指定。证书选项可能会
     SSH会话的有效功能,仅当从
     特定的源地址或可能会强制使用特定的命令。
     有关有效证书选项的列表,请参见-O的文档。
     以上选项。

     最后,可以使用有效期来定义证书。-V
     选项允许指定证书的开始和结束时间。cer‐
     在此范围之外的时间提供的证明将不被确认
     双方有效。缺省情况下,证书从UNIX Epoch到
     遥远的未来。

     对于要用于用户或主机身份验证的证书,CA pub‐
     lic密钥必须受sshd(8)或ssh(1)信任。请参考那些人
     双方页面以获取详细信息。

关键撤销清单
     ssh-keygen能够管理OpenSSH格式的密钥吊销列表(KRL)。
     这些二进制文件指定要使用的吊销密钥或证书
     紧凑格式,如果是,则每个证书只需花费一位
     被序列号撤销。

     可以使用-k标志生成KRL。此选项读取一个或多个
     从命令行下载文件并生成新的KRL。这些文件可能
     包含KRL规范(请参阅下文)或公共密钥,列出其中一个
     每行。普通公钥通过列出其哈希或con-来撤销
     KRL中的帐篷和被序列号或密钥ID撤销的证书(如果
     序列号为零或不可用)。

     使用KRL规范撤消密钥可以显式控制密钥
     用于撤销密钥的记录类型,可以用于直接撤销
     没有序列号或密钥ID的完整证书
     手头有inal证书。KRL规范包含以下行:
     下列指令之一,后接一个冒号和一些指令
     专用信息。

     序列号:serial_number [-serial_number]
             吊销具有指定序列号的证书。序列号
             数字是64位值,不包括零,可能是
             以十进制,十六进制或八进制表示。如果两个序列号是
             指定用连字符分隔,然后是序列号范围
             包括和之间的每个被撤销。CA密钥必须是
             使用-s选项在ssh-keygen命令行上指定。

     id:key_id
             撤消具有指定密钥ID字符串的证书。CA
             必须已使用以下命令在ssh-keygen命令行上指定了密钥
             -s选项。

     密钥:public_key
             撤消指定的键。如果列出了证书,则该证书
             被撤销为普通公钥。

     sha1:public_key
             通过其SHA1哈希值撤消指定的键。

     除-k外,还可以使用-u标志来更新KRL。当这个
     指定选项后,通过命令行列出的键将合并到
     KRL,再加上已经存在的那些。

     给定KRL,也有可能测试它是否撤销了特定
     键(或多个键)。-Q标志将查询现有的KRL,测试每个密钥
     在命令行上指定。如果命令行上列出的任何键具有
     被吊销(或遇到错误),然后ssh-keygen会退出并显示
     非零退出状态。如果没有按键,则将返回零退出状态
     被撤销了。

档案
     〜/ .ssh /身份
             包含协议版本1的RSA身份验证标识
             用户。该文件只能由以下任何人读取:
             用户。生成密码时可以指定密码
             键; 该密码将用于加密
             此文件使用3DES。该文件不会自动被以下文件访问
             ssh-keygen,但它作为private的默认文件提供
             键。尝试登录时,ssh(1)将读取此文件。

     〜/ .ssh / identity.pub
             包含用于身份验证的协议版本1 RSA公钥
             tion。该文件的内容应添加到
             用户希望在所有计算机上使用〜/ .ssh / authorized_keys
             使用RSA身份验证登录。无需保留
             此文件秘密的内容。

     〜/ .ssh / id_dsa
     〜/ .ssh / id_ecdsa
     〜/ .ssh / id_ed25519
     〜/ .ssh / id_rsa
             包含协议版本2 DSA,ECDSA,Ed25519或RSA
             用户的身份验证标识。该文件不应为
             除用户以外的任何人都可以读取。可以指定一个
             生成密钥时的密码短语;该密码将被使用
             使用128位AES加密此文件的私有部分。这个
             ssh-keygen不会自动访问文件,但是
             作为私钥的默认文件提供。ssh(1)将
             尝试登录时读取此文件。

     〜/ .ssh / id_dsa.pub
     〜/ .ssh / id_ecdsa.pub
     〜/ .ssh / id_ed25519.pub
     〜/ .ssh / id_rsa.pub
             包含协议版本2 DSA,ECDSA,Ed25519或RSA public
             认证密钥。该文件的内容应为
             添加到所有用户所在计算机上的〜/ .ssh / authorized_keys
             希望使用公钥身份验证登录。没有
             需要将此文件的内容保密。

     / etc / ssh / moduli
             包含用于DH-GEX的Diffie-Hellman组。档案格式
             在moduli(5)中描述。

环境
     SSH_USE_STRONG_RNG
             通常完成OpenSSL随机生成器的重新播种
             来自/ dev / urandom。如果SSH_USE_STRONG_RNG环境不同
             能力设置为非0的值,OpenSSL随机生成器为
             从/ dev / random重新播种。读取的字节数已定义
             通过SSH_USE_STRONG_RNG值。最小为14个字节。这套
             不建议在没有硬件的计算机上使用ting
             随机生成器,因为熵不足会导致连接
             直到有足够的熵可用为止。

也可以看看
     ssh(1),ssh-add(1),ssh-agent(1),moduli(5),sshd(8)

     安全外壳(SSH)公钥文件格式,RFC 4716,2006年。

作者
     OpenSSH是原始的免费ssh 1.2.12版本的衍生版本,该版本由
     塔图·伊洛宁(Tatu Ylonen)。亚伦·坎贝尔,鲍勃·贝克,马库斯·弗里德尔,尼尔斯·普罗沃斯,西奥
     de Raadt和Dug Song删除了许多错误,重新添加了新功能并创建了
     淘汰了OpenSSH。Markus Friedl贡献了对SSH协议的支持
     版本1.5和2.0。

BSD 2020年3月30日BSD
==============================================================
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 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 keys for use by SSH protocol versions 1
     and 2.  Protocol 1 should not be used and is only offered to support
     legacy devices.  It suffers from a number of cryptographic weaknesses and
     doesn't support many of the advanced features available for protocol 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 char‐
     acters 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 and keys stored in the newer OpenSSH format, 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 “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 gener‐
             ate 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 speci‐
             fies 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.  Gen‐
             erally, 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 and keys
             stored in the newer OpenSSH format.  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 finger‐
             prints.  Valid options are: “md5” and “sha256”.  The default is
             “sha256”.

     -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, includ‐
             ing 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 “RFC4716”.

     -J num_lines
             Exit after screening the specified number of lines while perform‐
             ing 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 perform‐
             ing DH candidate screening using the -T option.  This will be
             used to skip lines in the input file that have already been pro‐
             cessed 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 one or more certificates.

     -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, a visual ASCII art representation of the key is
             supplied with the fingerprint.

     -M memory
             Specify the amount of memory to use (in megabytes) when generat‐
             ing candidate moduli for DH-GEX.

     -m key_format
             Specify a key format for the -i (import) or -e (export) conver‐
             sion 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 princi‐
             pals 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 clear‐
                     ing 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-sepa‐
                     rated 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 private keys using the new OpenSSH for‐
             mat 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
             “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 com‐
             mand 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 valid‐
             ity 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: “+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 genera‐
             tion.  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 ver‐
             sion 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 suitabil‐
     ity (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 speci‐
     fies 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 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 cer‐
     tificates 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 pro‐
     viding 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 princi‐
     pals:

           $ 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 dis‐
     able 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 cer‐
     tificate that is presented at a time outside this range will not be con‐
     sidered 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 pub‐
     lic key must be trusted by sshd(8) or ssh(1).  Please refer to those man‐
     ual 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 con‐
     tents 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 orig‐
     inal certificate on hand.  A KRL specification consists of lines contain‐
     ing one of the following directives followed by a colon and some direc‐
     tive-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 command line.  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 authentica‐
             tion.  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 vari‐
             able 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 set‐
             ting is not recommended on the computers without the hardware
             random generator because insufficient entropy causes the connec‐
             tion 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 cre‐
     ated OpenSSH.  Markus Friedl contributed the support for SSH protocol
     versions 1.5 and 2.0.

BSD                             March 30, 2020                             BSD
 

  • 14
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值