gpg 密钥生成、导入、导出、自动输入密码
目录
一、系统环境
二、常用命令(以签名密钥为例)
(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-keygpg (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 IDfrom 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]6C8A15CECD3DCC2741A7C590AB38BACE635A064Cuid 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-keygpg (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 (仅用于签名)您的选择? 4RSA 密钥长度应在 1024 位与 4096 位之间。您想要用多大的密钥尺寸?(2048)您所要求的密钥尺寸是 2048 位请设定这把密钥的有效期限。0 = 密钥永不过期<n> = 密钥在 n 天后过期<n>w = 密钥在 n 周后过期<n>m = 密钥在 n 月后过期<n>y = 密钥在 n 年后过期密钥的有效期限是?(0) 0密钥永远不会过期以上正确吗?(y/n)yYou need a user ID to identify your key; the software constructs the user IDfrom 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' createdgpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/00BF891AC03B546DE9FCEDDC894EC1384177F643.rev'公钥和私钥已经生成并经签名。请注意这把密钥还不能用来加密,您必须先用“--edit-key”指令生成用于加密的子钥。pub rsa2048 2020-07-26 [SC]00BF891AC03B546DE9FCEDDC894EC1384177F643uid 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]8AC0AB86C34ADC6ED110A5A9E6730F4374866065uid [ 绝对 ] 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]8AC0AB86C34ADC6ED110A5A9E6730F4374866065uid [ 绝对 ] 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.keygpg: 密钥 E6730F4374866065:公钥“Search2016 (Search2016) <Search2016@163.com>”已导入gpg: 合计被处理的数量:1gpg: 已导入:1[root@192 ~]# gpg -k/root/.gnupg/pubring.kbx------------------------pub rsa2048 2020-07-27 [SC]8AC0AB86C34ADC6ED110A5A9E6730F4374866065uid [ 未知 ] Search2016 (Search2016) <Search2016@163.com>[root@192 ~]# gpg --import private-file.keygpg: 密钥 E6730F4374866065:“Search2016 (Search2016) <Search2016@163.com>”未改变gpg: 密钥 E6730F4374866065:私钥已导入gpg: 合计被处理的数量:1gpg: 未改变:1gpg: 读取的私钥:1gpg: 导入的私钥: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.keygpg: 密钥 E6730F4374866065:“Search2016 (Search2016) <Search2016@163.com>”未改变gpg: 密钥 E6730F4374866065:私钥已导入gpg: 合计被处理的数量:1gpg: 未改变:1gpg: 读取的私钥:1gpg: 导入的私钥: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.keygpg: 密钥 E6730F4374866065:“Search2016 (Search2016) <Search2016@163.com>”未改变gpg: 密钥 E6730F4374866065:私钥已导入gpg: 合计被处理的数量:1gpg: 未改变:1gpg: 读取的私钥:1gpg: 导入的私钥: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
相关文章:

gpg 密钥生成、导入、导出、自动输入密码
目录 一、系统环境 二、常用命令(以签名密钥为例) (1)生成密钥 (2)列出私钥 (3)列出公钥 (4)导出公钥 (5)导出私钥 ÿ…...

新个性化时尚解决方案!Prompt2Fashion:自动生成多风格、类型时尚图像数据集。
今天给大家介绍一种自动化生成时尚图像数据的方法Prompt2Fashion。 首先创建了一组描述,比如“适合婚礼的休闲风格服装”,然后用这些描述来指导计算机生成图像。具体来说,他们使用了大型语言模型来写出这些服装的描述,接着将这些描…...

软件设计师——计算机网络
📔个人主页📚:秋邱-CSDN博客☀️专属专栏✨:软考——软件设计师🏅往期回顾🏆:软件设计师——操作系统🌟其他专栏🌟:C语言_秋邱 一、OSI/ RM七层模型(⭐⭐⭐)…...

Python 实现电话号码和Email地址提取程序
Python 实现电话号码和Email地址提取程序 背景 在日常工作或学习中,我们经常需要从网页或文档中提取信息,比如电话号码和E-mail地址。手动查找和提取这些信息可能会耗费大量时间,而自动化工具可以帮助我们快速完成这个任务。 本篇博客将带…...

JavaGuide(3)
一、项目背景与简介 JavaGuide由GitHub用户Snailclimb开发并维护,是一个全面而深入的Java学习资源库。它旨在为Java初学者和有经验的开发者提供一个系统的学习路径和丰富的资源,帮助他们系统地学习和巩固Java及相关技术知识。 二、项目内容与特点 Jav…...

微信小程序15天
UniApp(Vue3组合式API)和微信小程序15天学习计划 第1天:开发环境配置和基础知识 UniApp和微信小程序概述及对比安装并配置HBuilderX(UniApp)和微信开发者工具创建第一个UniApp Vue3项目和微信小程序项目了解两个平台的项目结构差异配置外部浏览器和各种小程序模拟…...

用Python制作数据可视化仪表盘:使用Dash与Plotly构建实时交互式仪表盘
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在数据驱动的世界中,可视化是理解和解释复杂数据的关键工具。通过数据可视化,用户能够快速洞察数据趋势,做出明智决策。而仪表盘作为一种高度集成的可视化工具,能够将多种数据图表汇总到一个界面上,便于实时…...

干部管理系统:全面提升干部管理效能
数字化浪潮下,干部管理系统作为管理利器,日益凸显其核心价值。该系统全面实现干部信息的数据化,涵盖从基础档案到教育、工作、培训及考核等全方位细节,信息详尽且条理清晰。这不仅极大提升了干部信息查询与更新的效率,…...

Java之方法
方法(函数) Java中的方法必须定义在类或接口中。 package day2;import java.util.Scanner;public class way {public static void main(String[] args) {int arr[] new int[5];Scanner sc new Scanner(System.in);for (int i 0; i < arr.length;…...

MyBatis 数据表与实体映射的隐藏陷阱
这两天在处理一个线上问题时,发现Mybatis数据表和实体映射的时候会埋一个坑。这个问题看似微小,但却可能在关键时刻给我们带来不小的困扰。接下来,让我们深入剖析这个问题,并探究其发生的根源。 一、问题描述 我们在使用 Mybati…...

leetcode-239. 滑动窗口最大值
题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums [1,3,-1,-3,5,3,6,…...

springboot项目中开启mybatis的sql日志
在 application.yml 文件中 添加 mybatis-plus 配置,再重启项目,这里用到了mybatis-plus的自带sql日志打印 # application-jdbc.yml mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl如果只是用的mybatis的话&#x…...

卷积的计算——nn.Conv2d(Torch.nn里的Convolution Layers模块里的Conv2d类)
**前置知识: 1、张量和通道 张量:多维数组,用来表示数据(图像、视频等) 通道:图像数据的一部分,表示不同的颜色或特征层 通道只是张量的其中一个维度 以一张RGB图像为例, 该图像…...

确保接口安全:六大方案有效解决幂等性问题
文章目录 六大方案解决接口幂等问题什么是接口幂等?天然幂等不做幂等会怎么样? 解决方案1)insert前先select2)使用唯一索引3)去重表加悲观锁4)加乐观锁之版本号机制5)使用 Redisson 分布式锁6&a…...

代码随想录算法训练营第二十九天| 93. 复原 IP 地址,78. 子集, 90. 子集 II
93. 复原 IP 地址,78. 子集, 90. 子集 II 93. 复原 IP 地址78. 子集90. 子集 II 93. 复原 IP 地址 有效 IP 地址 正好由四个整数(每个整数位于 0 0 0 到 255 255 255之间组成,且不能含有前导 0 0 0),整…...

【WebGis开发 - Cesium】三维可视化项目教程---初始化场景
系列文章目录 【WebGis开发 - Cesium】三维可视化项目教程—图层管理基础【WebGis开发 - Cesium】三维可视化项目教程—视点管理 目录 系列文章目录引言一、Cesium引入项目1.1 下载资源1.2 项目引入Cesium 二、初始化地球2.1 创建基础文件2.1.1 创建Cesium工具方法文件2.1.2 创…...

点云中ICP算法的详解
ICP(Iterative Closest Point)算法是一种用于刚性点云配准的经典算法。其核心思想是通过迭代地寻找两个点云之间的最近点对,并计算最优的刚性变换(包括旋转和平移),使得源点云在目标点云的坐标系下对齐。IC…...

抽象类Abstart Class
抽象类其实就是一种不完全的设计图 必须用abstract修饰 模板方法:建议使用final修饰,不能被重写。...

Redis:通用命令 数据类型
Redis:通用命令 & 数据类型 通用命令SETGETKEYSEXISTSDELEXPIRETTLTYPEFLUSHALL 数据类型 Redis的客户端提供了很多命令用于操控Redis,在Redis中,key的类型都是字符串,而value有多种类型,每种类型都有自己的操作命…...

【Python高级编程】探索Python库:创建引人入胜的交互界面
1.制作交互界面常用到的库 在 Python 中,有多个库可以用于创建交互界面(GUI)。 以下是一些常用的 Python GUI 库: Tkinter: Python 的标准 GUI 库,通常随 Python 一起安装。简单易用,适合快速开发小型应用…...

OpenCV Canny()函数
OpenCV Canny()函数被用来检测图像物体的边缘。其算法原理如下: 高斯滤波:使用高斯滤波器平滑图像以减少噪声。高斯滤波器是一种线性滤波器,可以消除图像中的高频噪声,同时保留边缘信息。计算梯度强度和方向:使用Sobe…...

Java基础(3)
基本数据类型 Java 中的几种基本数据类型了解么? Java 中有 8 种基本数据类型,分别为: 6 种数字类型: 4 种整数型:byte、short、int、long2 种浮点型:float、double1 种字符类型:char1 种布尔…...

【C语言】VS调试技巧
文章目录 什么是bug什么是调试(debug)debug和releaseVS调试快捷键监视和内存观察编程常见错误归类 什么是bug bug本意是“昆虫”或“虫子”,现在一般是指在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题,简称程…...

【华为HCIP实战课程七】OSPF邻居关系排错MTU问题,网络工程师
一、MTU MUT默认1500,最大传输单元,一致性检测 [R3-GigabitEthernet0/0/1]mtu 1503//更改R3的MTU为1503 查看R3和SW1之间的OSPF邻居关系正常: 默认华为设备没有开启MTU一致性检测! [R3-GigabitEthernet0/0/1]ospf mtu-enable //手动开启MTU检测 [SW1-Vlanif30]ospf mtu…...

速盾:休闲类游戏如何选择高防cdn?
休闲类游戏的流行度日益增长,越来越多的玩家在业余时间里选择放松自己,享受游戏带来的乐趣。然而,在休闲类游戏中,网络延迟和游戏载入速度的问题常常会影响到玩家的游戏体验。为了解决这些问题,选择一个高防CDN&#x…...

电脑插上U盘不显示怎么回事?怎么解决?
平时使用电脑的时候经常会使用U盘来传输数据或是备份文件,有时候会遇到一个令头疼的问题,比如,将U盘插入电脑的USB口后,设备却显示不出来。电脑上插入U盘后却不显示会影响我们的正常工作。接下来,我们一起分析一下故障…...

Python 如何使用 SQLAlchemy 进行复杂查询
Python 如何使用 SQLAlchemy 进行复杂查询 一、引言 SQLAlchemy 是 Python 生态系统中非常流行的数据库处理库,它提供了一种高效、简洁的方式与数据库进行交互。SQLAlchemy 是一个功能强大的数据库工具,支持结构化查询语言(SQL)…...

nginx主配置文件
Nginx的主配置文件nginx.conf,一般定义了Nginx的基本设置和全局配置。下面是对这个配置文件的详细解释: 文件结构 #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log …...

使用数据库:
数据库: 1.为何需要数据库? 存储数据方法 第一种:用大脑记住数据, 第二种:写纸上, 第三种:写在计算机的内存中, 第四种:写出磁盘文件 2.数据库能做什么࿱…...

python list, tuple dict,set的区别 以及**kwargs 的基本用法
在python中, list, tuple, dict, set有什么区别, 主要应用在什么样的场景? 定义: list:链表,有序的项目, 通过索引进行查找,使用方括号”[]”; tuple:元组,元组将多样的对象集合到一起,不能修改,通过索引进行查找, 使用括号”()”; dict:字典,字典是一组键(key)和值(value…...