精华内容
下载资源
问答
  • ssh-keygen 可用来生成ssh公钥认证所需的公钥和私钥文件。 使用 ssh-keygen 时,请先进入到 ~/.ssh 目录,不存在的话,请先创建。并且保证 ~/.ssh 以及所有父目录的权限不能大于 711 生成的文件名和文件位置 使用 ...
  • SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性...利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题,这篇文章主要介绍了Linux 配置SSH免密登录 “ssh-keygen”的基本用法 ,需要的朋友可以参考下
  • generate-ssh 是一个围绕 ssh-keygen 工具的小包装。 它支持正确的错误处理,不会多次调用回调 (:<) 并且支持在 Windows 上定位 ssh-keygen 可执行文件。 生成(选择{附加路径,评论,位},cb(错误,数据{私人,...
  • 使用webcrypto API生成ssh密钥对 观看现场演示,为 ... 在其他任何地方,您都应该可以使用ssh-keygen,这是为SSH生成密钥对的推荐方法。 如何从OpenSSH公钥格式转换为PEM 有关如何转换,请参见 。
  • 下面小编就为大家带来一篇使用ssh-keygen,实现免密码登陆linux的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • ssh-keygen 应用 谢谢 :red_heart: 该项目的核心最初是由创建的。 谢谢! 原始存储库位于。
  • ssh-keygen -t rsa详解

    万次阅读 2020-03-30 11:03:40
    SSH-KEYGEN(1)BSD通用命令手册SSH-KEYGEN(1) 名称 ssh-keygen —身份验证密钥的生成,管理和转换 概要 ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1] [-N new_passphrase] [-C ...

    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
     

    展开全文
  • 如何使用ssh-keygen生成新的SSH key

    千次阅读 2020-11-02 21:30:43
    1.什么是ssh-keygen Ssh-keygen是用于为SSH创建新的身份验证密钥对的工具。 此类密钥对用于自动登录,单点登录和验证主机。 2.SSH key与公钥认证 SSH协议使用公共密钥加密技术对主机和用户进行身份验证。 ...

    1.什么是ssh-keygen

     

    Ssh-keygen是用于为SSH创建新的身份验证密钥对的工具。

    此类密钥对用于自动登录,单点登录和验证主机。

     

    2.SSH key与公钥认证

     

    SSH协议使用公共密钥加密技术对主机和用户进行身份验证。 认证密钥(称为SSH密钥)是使用keygen程序创建的。

    SSH引入了公钥身份验证,作为较旧的.rhosts身份验证的一种更安全的替代方法。 它通过避免将密码存储在文件中来提高安全性,并消除了受感染的服务器窃取用户密码的可能性。

    但是,SSH密钥就像密码一样是身份验证凭据。 因此,必须在某种程度上类似于用户名和密码来进行管理。 它们应该具有适当的终止过程,以便在不再需要时可以删除密钥。

     

    3.创建一个SSH秘钥对用于认证

     

    生成密钥对的最简单方法是运行不带参数的ssh-keygen。 在这种情况下,它将提示您输入要存储密钥的文件。 这是一个例子:

    ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (C:\Users\czy/.ssh/id_rsa): id_rsa_test
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in id_rsa_test.
    Your public key has been saved in id_rsa_test.pub.
    The key fingerprint is:
    SHA256:iAYtRWnMAZziOZF5G0pShVutxss6YbBJ/mCJpVcZrTU c
    展开全文
  • ssh获取公钥,绑定gitlab,ssh-keygen -t rsa命令详解

    千次阅读 多人点赞 2020-05-26 23:59:59
    用Git生成密钥的时候,查询到的命令是:ssh-keygen -t rsa -C "邮件地址@youremail.com"和ssh-keygen -t rsa -b 4096 -C "邮件地址@youremail.com"。使用的时候只是复制粘贴,却不明白这俩命令有什么区别,具体含义,...

    你越是认真生活,你的生活就会越美好——弗兰克·劳埃德·莱特
    《人生果实》经典语录

    昨晚我的战神笔记本电脑拿去百脑汇换了cd壳,今早起来无法正常开机,所以临时用公司电脑;
    到gitlab拉项目时,需要绑定ssh公钥,获取公钥得网上搜索教程,所以这里写一份,后续直接拿来用

    git仓库克隆项目时HTTPS跟SSH区别

    这两种方式的主要区别在于:
    使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地

    但是每次fetchpush代码都需要输入账号和密码,这也是https方式的麻烦之处。

    而使用SSH url克隆却需要在克隆之前先配置和添加好SSH key,因此,如果你想要使用SSH url克隆的话,你必须是这个项目的拥有者。

    否则你无法添加SSH key,另外ssh默认每次fetch和push代码不需要输入账号和密码,如果你想要每次都输入账号密码才能进行fetch和push也可以另外进行设置。

    HTTPS克隆地址
    https://gitee.com/WebJianHong/rrweb.git
    在这里插入图片描述
    SSH克隆地址
    git@gitee.com:WebJianHong/rrweb.git
    在这里插入图片描述

    通过命令ssh-keygen -t rsa 获取公钥

    在这里插入图片描述
    Enter file in which to save the key (/c/Users/chen/.ssh/id_rsa):指定生成的文件名(公钥会在文件里,用记事本打开可以复制)

    Overwrite (y/n)? : 我不是首次输入这命令,是否要覆盖的意思

    输完命令后
    在我的/c/Users/chen/.ssh文件夹下,会有几个文件,
    id_rsa(私钥)
    id_rsa.pub(公钥)

    在这里插入图片描述
    用记事本打开id_rsa.pub文件,复制里面内容
    在这里插入图片描述

    在gitlab上绑定公钥

    setting→SSH Keys→Add an SSH key
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    绑定好了后,就可以正常git clone SSH地址,将gitlab上项目克隆到本地了
    在这里插入图片描述

    ssh-keygen命令解释

    ssh-keygen -t rsa -C “youremail.com”

    在用Git生成密钥的时候,查询到的命令是:
    ssh-keygen -t rsa -C "邮件地址@youremail.com"

    ssh-keygen -t rsa -b 4096 -C "邮件地址@youremail.com"

    ssh

    SSH 为Secure Shell 的缩写,SSH 为建立在应用层基础上的安全协议

    SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。

    利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

    ssh-keygen

    从客户端来看,SSH提供两种级别的安全验证:

    • 第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
    • 第二种级别(基于密钥的安全验证)ssh-keygen:需要依靠密钥,这里的密钥是非对称密钥。

    t : t是type的缩写

    -t即指定密钥的类型,密钥的类型有两种,一种是RSA,一种是DSA

    RSA和DSA

    • RSA:RSA加密算法是一种非对称加密算法,是由三个麻省理工的牛人弄出来的,RSA是他们三个人姓的开头首字母组合。
    • DSA:Digital Signature Algorithm (DSA)是Schnorr和ElGamal签名算法的变种。

    为了让两个linux机器之间使用ssh不需要用户名和密码。所以采用了数字签名RSA或者DSA来完成这个操作。

    ssh-keygen默认使用rsa密钥,所以不加-t rsa也行,如果你想生成dsa密钥,就需要加参数-t dsa。

    b :b是bit的缩写

    -b 指定密钥长度。

    4096

    对于RSA密钥,最小要求768位,默认是2048位。4096指的是RSA密钥长度为4096位。
    DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。

    C:comment的缩写

    -C表示提供一个注释,用于识别这个密钥。 可以省略.

    “邮件地址@youremail.com”:用于识别这个密钥的注释内容

    引号里的内容为注释的内容,所以"双引号里面不一定得填邮箱,可以输入任何内容

    推荐阅读

    连点成线
    Vue源码学习目录


    谢谢你阅读到了最后~
    期待你关注、收藏、评论、点赞~
    让我们一起 变得更强

    展开全文
  • ssh-keygen 用来生成ssh登录的key,可以使我们以后登录远程主机时无需再输入远程主机的key. 具体使用方法如下: 例如我们有两台主机: A:192.168.0.1 B:192.168.0.2 当我们需要用主机A登录远程主机B时,我们在...

    ssh-keygen 用来生成ssh登录的key,可以使我们以后登录远程主机时无需再输入远程主机的key.

    具体使用方法如下:

    例如我们有两台主机:

    A:192.168.0.1   B:192.168.0.2

    当我们需要用主机A登录远程主机B时,我们在主机A上输入:

    、# ssh-keygen -t rsa  

    会产生如下的信息:

    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):      
    ->输入key文件的名称
    Enter passphrase (empty for no passphrase):                       ->输入使用key时的密码,注意这里不是远处服务器的密码,

                                                                                                        只是你使用sshkey时需要输入的密码,

                                                                                                        建议不输入(如果要输入这个密码还不如直接输入

                                                                                                        远处主机的密码:))
    Enter same passphrase again:  
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    11:ae:00:bd:92:bc:70:f8:4b:cb:47:06:7f:e2:73:21 
    root@xxxxxx

    二、# scp id_rsa.pub 192.168.0.2:/root/.ssh/

    三、ssh 192.168.0.2    ->登录远程主机B

     

    ssh-keygen参数说明

      ssh-keygen - 生成、管理和转换认证密钥
         ssh-keygen [-q] [-b bits-t type [-N new_passphrase] [-C comment] [-foutput_keyfile]
         ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
         ssh-keygen -i [-f input_keyfile]
         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]
         ssh-keygen -B [-f input_keyfile]
         ssh-keygen -D reader
         ssh-keygen -F hostname [-f known_hosts_file]
         ssh-keygen -H [-f known_hosts_file]
         ssh-keygen -R hostname [-f known_hosts_file]
         ssh-keygen -U reader [-f input_keyfile]
         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 num_trials] [-W generator]
         ssh-keygen 用于为 
    生成、管理和转换认证密钥,包括 RSA 和 DSA 两种密钥。
         密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。
         ssh-keygen 还可以用来产生 Diffie-Hellman group exchange (DH-GEX) 中使用的素数模数。
         参见模数生成小节。
         一般说来,如果用户希望使用RSA或DSA认证,那么至少应该运行一次这个程序,
         在 ~/.ssh/identity~/.ssh/id_dsa 或 ~/.ssh/id_rsa 文件中创建认证所需的密钥。
         另外,系统管理员还可以用它产生主机密钥。
         通常,这个程序产生一个密钥对,并要求指定一个文件存放私钥,同时将公钥存放在附加了".pub"后缀的同名文件中。
         程序同时要求输入一个密语字符串(passphrase),空表示没有密语(主机密钥的密语必须为空)。
         密语和口令(password)非常相似,但是密语可以是一句话,里面有单词、标点符号、数字、空格或任何你想要的字符。
         好的密语要30个以上的字符,难以猜出,由大小写字母、数字、非字母混合组成。密语可以用 -p 选项修改。
         丢失的密语不可恢复。如果丢失或忘记了密语,用户必须产生新的密钥,然后把相应的公钥分发到其他机器上去。
         RSA1的密钥文件中有一个"注释"字段,可以方便用户标识这个密钥,指出密钥的用途或其他有用的信息。
         创建密钥的时候,注释域初始化为"user@host",以后可以用 -c 选项修改。
         密钥产生后,下面的命令描述了怎样处置和激活密钥。可用的选项有:
         -a trials
                 在使用 -T 对 DH-GEX 候选素数进行安全筛选时需要执行的基本测试数量。
         -B      显示指定的公钥/私钥文件的 bubblebabble 摘要。
         -b bits
                 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。
         -C comment
                 提供一个新注释
         -c      要求修改私钥和公钥文件中的注释。本选项只支持 RSA1 密钥。
                 程序将提示输入私钥文件名、密语(如果存在)、新注释。
         -D reader
                 下载存储在智能卡 reader 里的 RSA 公钥。
         -e      读取OpenSSH的私钥或公钥文件,并以 RFC 4716 SSH 公钥文件格式在 stdout 上显示出来。
                 该选项能够为多种商业版本的 SSH 输出密钥。
         -F hostname
                 在 known_hosts 文件中搜索指定的 hostname ,并列出所有的匹配项。
                 这个选项主要用于查找散列过的主机名/ip地址,还可以和 -H 选项联用打印找到的公钥的散列值。
         -f filename
                 指定密钥文件名。
         -G output_file
                 为 DH-GEX 产生候选素数。这些素数必须在使用之前使用 -T 选项进行安全筛选。
         -g      在使用 -r 打印指纹资源记录的时候使用通用的 DNS 格式。
         -H      对 known_hosts 文件进行散列计算。这将把文件中的所有主机名/ip地址替换为相应的散列值。
                 原来文件的内容将会添加一个".old"后缀后保存。这些散列值只能被 ssh 和 sshd 使用。
                 这个选项不会修改已经经过散列的主机名/ip地址,因此可以在部分公钥已经散列过的文件上安全使用。
         -i      读取未加密的SSH-2兼容的私钥/公钥文件,然后在 stdout 显示OpenSSH兼容的私钥/公钥。
                 该选项主要用于从多种商业版本的SSH中导入密钥。
         -l      显示公钥文件的指纹数据。它也支持 RSA1 的私钥。
                 对于RSA和DSA密钥,将会寻找对应的公钥文件,然后显示其指纹数据。
         -M memory
                 指定在生成 DH-GEXS 候选素数的时候最大内存用量(MB)。
         -N new_passphrase
                 提供一个新的密语。
         -P passphrase
                 提供(旧)密语。
         -p      要求改变某私钥文件的密语而不重建私钥。程序将提示输入私钥文件名、原来的密语、以及两次输入新密语。
         -q      安静模式。用于在 /etc/rc 中创建新密钥的时候。
         -R hostname
                 从 known_hosts 文件中删除所有属于 hostname 的密钥。
                 这个选项主要用于删除经过散列的主机(参见 -H 选项)的密钥。
         -r hostname
                 打印名为 hostname 的公钥文件的 SSHFP 指纹资源记录。
         -S start
                 指定在生成 DH-GEX 候选模数时的起始点(16进制)。
         -T output_file
                 测试 Diffie-Hellman group exchange 候选素数(由 -G 选项生成)的安全性。
         -t type
                 指定要创建的密钥类型。可以使用:"rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2)
         -U reader
                 把现存的RSA私钥上传到智能卡 reader
         -v      详细模式。ssh-keygen 将会输出处理过程的详细调试信息。常用于调试模数的产生过程。
                 重复使用多个 -v 选项将会增加信息的详细程度(最大3次)。
         -W generator
                 指定在为 DH-GEX 测试候选模数时想要使用的 generator
         -y      读取OpenSSH专有格式的公钥文件,并将OpenSSH公钥显示在 stdout 上。
         ssh-keygen 可以生成用于 Diffie-Hellman Group Exchange (DH-GEX) 协议的 groups 。
         生成过程分为两步:
         首先,使用一个快速且消耗内存较多的方法生成一些候选素数。然后,对这些素数进行适应性测试(消耗CPU较多)。
         可以使用 -G 选项生成候选素数,同时使用 -b 选项制定其位数。例如:
               # ssh-keygen -G moduli-2048.candidates -b 2048
         默认将从指定位数范围内的一个随机点开始搜索素数,不过可以使用 -S 选项来指定这个随机点(16进制)。
         生成一组候选数之后,接下来就需要使用 -T 选项进行适应性测试。
         此时 ssh-keygen 将会从 stdin 读取候选素数(或者通过 -f 选项读取一个文件),例如:
               # ssh-keygen -T moduli-2048 -f moduli-2048.candidates
         每个候选素数默认都要通过 100 个基本测试(可以通过 -a 选项修改)。
         DH generator 的值会自动选择,但是你也可以通过 -W 选项强制指定。有效的值可以是: 2, 3, 5
         经过筛选之后的 DH groups 就可以存放到 /etc/ssh/moduli 里面了。
         很重要的一点是这个文件必须包括不同长度范围的模数,而且通信双方双方共享相同的模数。
         ~/.ssh/identity
                 该用户默认的 RSA1 身份认证私钥(SSH-1)。此文件的权限应当至少限制为"600"。
                 生成密钥的时候可以指定采用密语来加密该私钥(3DES)。
                 
    将在登录的时候读取这个文件。
         ~/.ssh/identity.pub
                 该用户默认的 RSA1 身份认证公钥(SSH-1)。此文件无需保密。
                 此文件的内容应该添加到所有 RSA1 目标主机的 ~/.ssh/authorized_keys 文件中。
         ~/.ssh/id_dsa
                 该用户默认的 DSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。
                 生成密钥的时候可以指定采用密语来加密该私钥(3DES)。
                 
    将在登录的时候读取这个文件。
         ~/.ssh/id_dsa.pub
                 该用户默认的 DSA 身份认证公钥(SSH-2)。此文件无需保密。
                 此文件的内容应该添加到所有 DSA 目标主机的 ~/.ssh/authorized_keys 文件中。
         ~/.ssh/id_rsa
                 该用户默认的 RSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。
                 生成密钥的时候可以指定采用密语来加密该私钥(3DES)。

    参考博客:

    https://blog.csdn.net/Primeprime/article/details/71211333

    https://blog.csdn.net/KillEr_Jok/article/details/84423212

    展开全文
  • ssh-keygen命令详解

    万次阅读 2021-06-02 23:04:41
    ssh生成、管理和转换认证密钥,ssh-keygen命令 用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。 SSH 密钥默认保留在~/.ssh目录中。如果没有~/.ssh目录,ssh-keygen命令会使用正确的权限...
  • 本地主机ha01配置: 代码如下:[root@ha01 /]# cd /etc/ssh[root@ha01 ssh]# ssh-keygen -t rsa -N “” (该步骤生成key公私密钥对,-N “”表示密钥对短语为空)Generating public/private rsa key pair.Enter file ...
  • 00. 目录 ...ssh-keygen命令用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。 02. 命令格式 语法 ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] ...
  • ssh-keygen的使用方法以及ssh-keygen参数说明

    万次阅读 多人点赞 2018-02-06 11:01:03
    一、概述 1、就是为了让两个linux机器之间使用ssh不需要用户名和密码。采用了数字签名RSA或者DSA...A机器ssh登录B机器无需输入密码; 加密方式选 rsa|dsa均可以,默认dsa   二、具体操作流程   单向登陆的操作
  • Gitbash打开后, 直接cd回车后, 进入cd .ssh目录, 然后输入命令ssh-keygen -t rsa -C "youemail@XXX.com"回车后, 输入文件名,比如id_rsa_XXX,来保存生成的ssh-key.剩下的一路回车即可. 这时你可以看到.ssh目录下生成...
  • ssh-keygen 生成SSH密钥对 安装 确保您拥有ssh-keygen(如果不确定,请尝试$ ssh-keygen ) npm软件包安装 npm install ssh-keygen 或从github下载并放在./node_modules中 用法 var keygen = require ( 'ssh-...
  • ssh-keygen 的 详解

    千次阅读 2019-01-09 22:42:30
    ssh-keygen - 生成、管理和转换认证密钥,包括 RSA 和 DSA 两种密钥 密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥 配置: 1、在本地机器中的~/.ssh/目录下执行下命令 ssh-keygen -t ...
  • ssh-keygen ssh-add

    千次阅读 2018-04-14 16:00:11
    ssh-key 用于ssh 免密码登录,具体使用方式可以搜到很多应用教程,主要步骤是一样的,主要区别在Linux系统和Windows系统中,应用命令和过程一样,ssh-keygen命令多用于git,因此在windows平台中Git-Bash可直接支持...
  • ssh-keygen -R

    千次阅读 2020-05-21 21:38:41
    使用shh-keygen 命令(强烈建议使用此方法) 比如我们要将 的公钥信息清除,使用命令(请自己将 替换成自己的IP或域名): ssh-keygen -R xxx
  •   开发中经常用ssh来进行服务器管理员登录,但是每次输入用户名和密码的过程非常繁琐,通过ssh-keygenssh-copy-id这两个命&amp;amp;gt;令,两步就可以实现ssh免密码登录。 命令简介: ssh-keygen:生成...
  • ssh-keygen命令参数理解

    2021-03-02 18:00:27
    ssh-keygen -m PEM -t rsa -b 4096 -t 是生成密钥的类型,-b是指定密钥长度,-C是关于密钥的一个注解,-o是强制要求密钥生成时必须输入密码的参数,-m是指定密钥格式(比如:RSA 和PEM)。 ...
  • 1.ssh-keygen SSH 为 Secure Shell 的缩写,SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。 ...
  • 如何生成ssh公钥(ssh-keygen)

    千次阅读 2021-01-13 10:05:09
    查看 ssh 公钥方法: 1.打开命令窗口 a. 打开你的 git bash 窗口 b. 进入 .ssh 目录:cd ~/.ssh c. 找到 id_rsa.pub 文件:ls d. 查看公钥:cat id_rsa.pub 或者 vim id_rsa.pub 2.或者你也可以直接输入命令 :cat ...
  • 首先生成密钥,用命令ssh-keygen –t rsa 运行后可以一直空格,生成密钥,id_rsa和id_rsa.pub文件 ,默认放在/root/.ssh/下,.ssh文件是隐藏的,要显示隐藏文件才看得到 在/home/admin下创建.ssh活页夹,把id_rsa...
  • ssh-keygen -t rsa ssh-copy-id s2 注意:ssh-copy-id s2中的s2为我这里服务器的名字,请看官根据情况进行选择。(例如下图我的系统目前使用的为s2服务器) etuser35 @ s2: /hdd/users/etuser35 > 首先输入ssh...
  • gitLab-----配置ssh-keygen

    2019-11-23 11:57:59
    看了好多资料终于搞定了git 中clone命令报错这个问题,废话不多说...在下载好的Git中的bin目录下打开bash.exe输入命令ssh-keygen -t rsa -C “username” (注:username为你git上的用户名),如果执行成功。返回: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 129,137
精华内容 51,654
关键字:

ssh-keygen