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 一起安装。简单易用,适合快速开发小型应用…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...