gpg 密钥生成、导入、导出、自动输入密码

news2024/12/23 0:18:28

目录

一、系统环境

二、常用命令(以签名密钥为例)

(1)生成密钥

(2)列出私钥

(3)列出公钥

(4)导出公钥

(5)导出私钥

(6)导入公钥/私钥

(7)删除公钥

(8)删除私钥

三、在对私钥进行操作时,避免弹窗输入密码

(1)直接输入密码

(2)将密码输入到文件里


这里总结一下 gpg 密钥的使用,在最新的版本 2.2.x (CentOS 8)相较于之前的 2.0.x (CentOS 7)版本还是有较大的变化的,还有记录一下自动输入密钥密码的方式,虽然这种方式不提倡(不安全),但是在一些特殊情况下,比如:写脚本执行 gpg 操作的时候,总不能每次弹框手动输入命令吧,下面就来总结下。

一、系统环境

CentOS Linux release 8.0.1905 (Core)

**注意:**CentOS 7 中 gpg 的版本为 2.0.x,CentOS 8 中 gpg 为 2.2.x,还是有很大变化的,比如:签名密钥的导入和导出都需要输入密码。

二、常用命令(以签名密钥为例)

(1)生成密钥

**简单方式:**gpg --generate-key 或 --gen-key : 生成 gpg 密钥,这种方式有一些参数是默认的;

      [root@192 ~]# gpg --gen-key
      gpg (GnuPG) 2.2.9; Copyright (C) 2018 Free Software Foundation, Inc.
      This is free software: you are free to change and redistribute it.
      There is NO WARRANTY, to the extent permitted by law.
      Note: Use "gpg --full-generate-key" for a full featured key generation dialog.
      You need a user ID to identify your key; the software constructs the user ID
      from the Real Name, Comment and Email Address in this form:
      "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
      真实姓名:temp-key
      电子邮件地址:temp-key@163.com
      您选定了这个用户标识:
       “temp-key <temp-key@163.com>Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
      我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
      鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
      我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
      鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
      gpg: 密钥 AB38BACE635A064C 被标记为绝对信任
      gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/6C8A15CECD3DCC2741A7C590AB38BACE635A064C.rev'
      公钥和私钥已经生成并经签名。
      pub   rsa2048 2020-07-27 [SC] [有效至:2022-07-27]
      6C8A15CECD3DCC2741A7C590AB38BACE635A064C
      uid temp-key <temp-key@163.com>
      sub   rsa2048 2020-07-27 [E] [有效至:2022-07-27]
      [root@192 ~]#
  
 

**详细的方式:**gpg --full-gen-key 或 --full-generate-key : 生成gpg密钥,有详细的配置参数;


      [root@localhost ~]# gpg --full-generate-key
      gpg (GnuPG) 2.2.9; Copyright (C) 2018 Free Software Foundation, Inc.
      This is free software: you are free to change and redistribute it.
      There is NO WARRANTY, to the extent permitted by law.
      请选择您要使用的密钥种类:
         (1) RSA and RSA (default)
       (2) DSA and Elgamal
       (3) DSA (仅用于签名)
       (4) RSA (仅用于签名)
      您的选择? 4
      RSA 密钥长度应在 1024 位与 4096 位之间。
      您想要用多大的密钥尺寸?(2048)
      您所要求的密钥尺寸是 2048 位
      请设定这把密钥的有效期限。
       0 = 密钥永不过期
       <n>  = 密钥在 n 天后过期
       <n>w = 密钥在 n 周后过期
       <n>m = 密钥在 n 月后过期
       <n>y = 密钥在 n 年后过期
      密钥的有效期限是?(0) 0
      密钥永远不会过期
      以上正确吗?(y/n)y
      You need a user ID to identify your key; the software constructs the user ID
      from the Real Name, Comment and Email Address in this form:
      "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
      真实姓名:Search2016
      电子邮件地址:Search2016@163.com
      注释:Search2016
      您选定了这个用户标识:
       “Search2016 (Search2016) <Search2016@163.com>”
      更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?O
      我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
      鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
      gpg: 密钥 894EC1384177F643 被标记为绝对信任
      gpg: directory '/root/.gnupg/openpgp-revocs.d' created
      gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/00BF891AC03B546DE9FCEDDC894EC1384177F643.rev'
      公钥和私钥已经生成并经签名。
      请注意这把密钥还不能用来加密,您必须先用“--edit-key”指令
      生成用于加密的子钥。
      pub   rsa2048 2020-07-26 [SC]
      00BF891AC03B546DE9FCEDDC894EC1384177F643
      uid Search2016 (Search2016) <Search2016@163.com>
      [root@localhost ~]#
  
 

(2)列出私钥

gpg -K 或 --list-secret-keys : 查看私钥,参数后面没有指定私钥,则输出所有私钥;

      [root@192 ~]# gpg -K
      /root/.gnupg/pubring.kbx
      ------------------------
      sec   rsa2048 2020-07-27 [SC]
      8AC0AB86C34ADC6ED110A5A9E6730F4374866065
      uid [ 绝对 ] Search2016 (Search2016) <Search2016@163.com>
  
 

(3)列出公钥

gpg -k 或 --list-public-keys : 查看公钥,参数后面没有指定公钥,则输出所有公钥;

      [root@192 ~]# gpg -k
      /root/.gnupg/pubring.kbx
      ------------------------
      pub   rsa2048 2020-07-27 [SC]
      8AC0AB86C34ADC6ED110A5A9E6730F4374866065
      uid [ 绝对 ] Search2016 (Search2016) <Search2016@163.com>
  
 

(4)导出公钥

    gpg -a -o public-file.key --export keyId : 导出公钥keyId 到 文件 public-file.key中;

其中:

-a 为 --armor 的简写,表示密钥以ASCII的形式输出,默认以二进制的形式输出;

-o 为 --output 的简写,指定写入的文件;
[root@192 ~]# gpg -a -o public-file.key --export 8AC0AB86C34ADC6ED110A5A9E6730F4374866065
 

(5)导出私钥

 gpg -a -o private-file.key --export-secret-keys keyId : 导出私钥 keyId 到文件 private-file.key中,导出的时候需要输入密钥密码;

其中,导出私钥需要输入保护私钥的密码;
[root@192 ~]# gpg -a -o private-file.key --export-secret-keys 8AC0AB86C34ADC6ED110A5A9E6730F4374866065
 

(6)导入公钥/私钥

gpg --import public-file.key / private-file.key : 导入公钥或私钥,其中,导入私钥需要输入保护私钥的密码;

      [root@192 ~]# gpg --import public-file.key
      gpg: 密钥 E6730F4374866065:公钥“Search2016 (Search2016) <Search2016@163.com>”已导入
      gpg: 合计被处理的数量:1
      gpg: 已导入:1
      [root@192 ~]# gpg -k
      /root/.gnupg/pubring.kbx
      ------------------------
      pub   rsa2048 2020-07-27 [SC]
      8AC0AB86C34ADC6ED110A5A9E6730F4374866065
      uid [ 未知 ] Search2016 (Search2016) <Search2016@163.com>
      [root@192 ~]# gpg --import private-file.key
      gpg: 密钥 E6730F4374866065:“Search2016 (Search2016) <Search2016@163.com>”未改变
      gpg: 密钥 E6730F4374866065:私钥已导入
      gpg: 合计被处理的数量:1
      gpg: 未改变:1
      gpg: 读取的私钥:1
      gpg: 导入的私钥:1
      [root@192 ~]#
  
 

(7)删除公钥

gpg --delete-keys keyId : 删除公钥;
[root@192 ~]# gpg --delete-keys 6C8A15CECD3DCC2741A7C590AB38BACE635A064C
 

(8)删除私钥

gpg --delete-secret-keys : 删除私钥;
[root@192 ~]# gpg --delete-secret-keys 6C8A15CECD3DCC2741A7C590AB38BACE635A064C
 

三、在对私钥进行操作时,避免弹窗输入密码

 gpg 在新的版本中,在对私钥进行操作的时候(签名、导入等)需要输入密钥的密码,但是有时候我们并不希望弹框输入密码,更希望是通过脚本等方式执行 gpg 的一些操作,方法如下:

(1)直接输入密码

gpg --import  **\--pinentry-mode loopback --batch --passphrase password**  private-file.key

      [root@localhost ~]# gpg --import --pinentry-mode loopback --batch --passphrase 123456 private-file.key
      gpg: 密钥 E6730F4374866065:“Search2016 (Search2016) <Search2016@163.com>”未改变
      gpg: 密钥 E6730F4374866065:私钥已导入
      gpg: 合计被处理的数量:1
      gpg: 未改变:1
      gpg: 读取的私钥:1
      gpg: 导入的私钥:1
      [root@localhost ~]#
  
 

(2)将密码输入到文件里

gpg --import  **\--pinentry-mode loopback --batch --passphrase-file password-file**  private-file.key

      [root@localhost ~]# gpg --import --pinentry-mode loopback --batch --passphrase-file password-file private-file.key
      gpg: 密钥 E6730F4374866065:“Search2016 (Search2016) <Search2016@163.com>”未改变
      gpg: 密钥 E6730F4374866065:私钥已导入
      gpg: 合计被处理的数量:1
      gpg: 未改变:1
      gpg: 读取的私钥:1
      gpg: 导入的私钥:1
      [root@localhost ~]#
  
 

文件 password-file 第一行为设置的密码,这两种方式都不提倡使用,如果真要使用建议使用第二中。

文章来源: blog.csdn.net,作者:Linux猿,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nyist_zxp/article/details/107597626

推荐

华为开发者空间发布

让每位开发者拥有一台云主机

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com

Linux

.pep-ad-img-wrapper{ box-sizing: border-box; display: block; position: relative; text-decoration: none; overflow: hidden; margin:0px auto; } .pep-smart-recommend-img-card img { width: 100%; height: auto; }

转至:https://bbs.huaweicloud.com/blogs/290331

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2203690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5个免费ppt模板网站推荐!轻松搞定职场ppt制作!

每次过完小长假&#xff0c;可以明显地感觉到&#xff0c;2024这一年很快又要结束了&#xff0c;不知此刻的你有何感想呢&#xff1f;是满载而归&#xff0c;还是准备着手制作年终总结ppt或年度汇报ppt呢&#xff1f; 每当说到制作ppt&#xff0c;很多人的第一反应&#xff0c…

k8s 1.28.2 集群部署 MinIO 分布式存储

文章目录 [toc]MinIO 介绍MinIO 生产硬件要求MinIO 存储要求MinIO 内存要求MinIO 网络要求MinIO 部署架构分布式 MinIO复制的 MinIO 部署 MinIO创建目录节点打标签创建 namespace创建 pv创建 MinIO配置 ingress问题记录通过代理服务器访问 MinIO 的 Object Browser 界面一直显示…

51单片机的智能衣柜【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块光照传感器时钟模块温湿度传感器继电器按键、LED等模块构成。适用于智能衣柜、智能衣橱、紫外线定时消毒等相似项目。 可实现功能: 1、LCD1602实时显示北京时间、温湿度和开关门状态 2、时钟模块DS1302采集时间 …

实战逆向RUST语言程序

实战为主&#xff0c;近日2024年羊城杯出了一道Rust编写的题目&#xff0c;这里将会以此题目为例&#xff0c;演示Rust逆向该如何去做。 题目名称&#xff1a;sedRust_happyVm 题目内容&#xff1a;unhappy rust, happy vm 关于Rust逆向&#xff0c;其实就是看汇编&#xff…

制造业人工智能的场景应用落地现状、难点和建议

制造业应用人工智能可以提高制造业的生产效率&#xff0c;推动制造业高质量发展和竞争力提升&#xff0c;促进国民经济的持续稳定增长。近年来&#xff0c;制造业人工智能的场景化应用落地不断推进&#xff0c;但在落地过程中遇到一些难点。本文对于制造企业应用人工智能的场景…

AVL树如何维持平衡

1.AVL树的特性 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查 找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962年 发明了一种…

【工具使用】使用Docsify搭建个人文档网站

检查Node.js安装状态 首先&#xff0c;打开命令提示符&#xff08;CMD&#xff09;&#xff0c;输入以下命令以验证Node.js是否已经安装在您的电脑上&#xff1a; node -v安装Docsify CLI工具 接下来&#xff0c;通过以下命令全局安装Docsify的命令行工具&#xff1a; npm …

保护企业知识产权!推荐十款源代码加密软件

在现代软件开发中&#xff0c;源代码是企业最重要的资产之一。然而&#xff0c;源代码的泄露可能导致巨大的经济损失和知识产权问题。为帮助企业保护其源代码安全&#xff0c;以下推荐十种源代码加密软件&#xff0c;确保你的知识产权不受侵犯。 1. Ping32 Ping32不仅是一款终…

Biomamba求职| 国奖+4篇一作SCI

转眼间我也要参加秋招啦&#xff0c;认真的求职帖&#xff0c;各位老师/老板欢迎联系~其它需要求职的小伙伴也欢迎把简历发给我们&#xff0c;大家一起找工作。 一、基本信息 姓名&#xff1a;Biomamba 性别&#xff1a;男 出厂年份&#xff1a;1998 籍贯&#xff1a;浙江…

FileLink文件摆渡系统应用场景深入分析(一文读懂)

在现代企业的运营中&#xff0c;文件传输与管理的效率直接影响业务的流畅性与安全性。FileLink文件摆渡系统凭借其强大的功能和灵活的应用场景&#xff0c;成为企业信息流动的重要工具。本文将深入分析FileLink文件摆渡系统的几种典型应用场景&#xff0c;展示其在各行业中的价…

【docker】要将容器中的 livox_to_pointcloud2 文件夹复制到宿主机上

复制文件夹 使用 docker cp 命令从容器复制文件夹到宿主机&#xff1a; docker cp <container_id_or_name>:/ws_livox/src/livox_to_pointcloud2 /path/to/host/folder sudo docker cp dandong_orin_docker:/ws_livox/src/livox_to_pointcloud2 /home

AI时代AI提示词学习路线

AI时代&#xff0c;万丈高楼平地起&#xff0c;AI提示词就是基石&#xff01; AI提示词是工具&#xff0c;你不应该先学各种技巧再开始用&#xff0c;而应该先用起来再学习各种技巧。 AI时代AI提示词学习路线&#xff1a; 1、养成习惯&#xff1a;遇事不决问AI。 2、带着问题…

2024.10月7~10日 进一步完善《电信资费管理系统》

一、新增的模块&#xff1a; 在原项目基础上&#xff0c;新增加了以下功能&#xff1a; 1、增加AspectJ 框架的AOP 异常记录和事务管理模块。 2、增加SpringMVC的拦截器&#xff0c;实现登录 控制页面访问权限。 3、增加 Logback日志框架&#xff0c;记录日志。 4、增加动态验…

代码随想录算法训练营第四十六天 | 647. 回文子串,516.最长回文子序列

四十六天打卡&#xff0c;今天用动态规划解决回文问题&#xff0c;回文问题需要用二维dp解决 647.回文子串 题目链接 解题思路 没做出来&#xff0c;布尔类型的dp[i][j]&#xff1a;表示区间范围[i,j] &#xff08;注意是左闭右闭&#xff09;的子串是否是回文子串&#xff0…

【JavaEE】——回显服务器的实现

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;引入 1&#xff1a;基本概念 二&#xff1a;UDP socket API使用 1&#xff1a;socke…

zookeeper ——watcher

这应该不是目录 1.watcher定义和说明1.1定义1.2特性1.3watcher的通知状态Watcher.Event.KeeperState1.4watcher的事件类型Event.EventType1.5基本流程 1.watcher定义和说明 1.1定义 在ZooKeeper中&#xff0c;Watcher是一种机制&#xff0c;用于在节点&#xff08;znode&#…

2024百度云智大会|百度大模型内容安全合规探索与实践

9月25日&#xff0c;2024百度云智大会在北京举办。会上&#xff0c;百度智能云分别针对算力、模型、AI 应用&#xff0c;全面升级百舸 AI 异构计算平台 4.0、千帆大模型平台 3.0 两大 AI 基础设施&#xff0c;并升级代码助手、智能客服、数字人三大 AI 原生应用产品。 在大模型…

网络编程(17)——asio多线程模型IOThreadPool

十七、day17 之前我们介绍了IOServicePool的方式&#xff0c;一个IOServicePool开启n个线程和n个iocontext&#xff0c;每个线程内独立运行iocontext, 各个iocontext监听各自绑定的socket是否就绪&#xff0c;如果就绪就在各自线程里触发回调函数。为避免线程安全问题&#xf…

Auto-Animate:是一款零配置、即插即用的动画工具,可以为您的 Web 应用添加流畅的过渡效果

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 用户体验成为了检验产品成功与否的关键因素。而动画效果&#xff0c;作为提升用户体验的重要手段&#xff0c;在网页和应用开发中扮演着举足轻重的角色…

【笔记学习篇】一篇文章搞定Mybatis-快速回顾

概述 5.1.1 Mybatis简介 Mybatis是一款优秀的持久层框架&#xff0c;它以sql为中心&#xff0c;支持定制化sql、存储过程以及高级映射。 使用Mybatis框架&#xff0c;可以无需手动编写基础的JDBC代码、无需手动设置参数和转换结果集到对象。 Mybatis可以使用简单的xml或注解来…