当前位置: 首页 > news >正文

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 密钥生成、导入、导出、自动输入密码

目录 一、系统环境 二、常用命令&#xff08;以签名密钥为例&#xff09; &#xff08;1&#xff09;生成密钥 &#xff08;2&#xff09;列出私钥 &#xff08;3&#xff09;列出公钥 &#xff08;4&#xff09;导出公钥 &#xff08;5&#xff09;导出私钥 &#xff…...

新个性化时尚解决方案!Prompt2Fashion:自动生成多风格、类型时尚图像数据集。

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

软件设计师——计算机网络

&#x1f4d4;个人主页&#x1f4da;&#xff1a;秋邱-CSDN博客☀️专属专栏✨&#xff1a;软考——软件设计师&#x1f3c5;往期回顾&#x1f3c6;&#xff1a;软件设计师——操作系统&#x1f31f;其他专栏&#x1f31f;&#xff1a;C语言_秋邱 一、OSI/ RM七层模型(⭐⭐⭐)…...

Python 实现电话号码和Email地址提取程序

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

JavaGuide(3)

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

微信小程序15天

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

用Python制作数据可视化仪表盘:使用Dash与Plotly构建实时交互式仪表盘

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

干部管理系统:全面提升干部管理效能

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

Java之方法

方法&#xff08;函数&#xff09; 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 数据表与实体映射的隐藏陷阱

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

leetcode-239. 滑动窗口最大值

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

springboot项目中开启mybatis的sql日志

在 application.yml 文件中 添加 mybatis-plus 配置&#xff0c;再重启项目&#xff0c;这里用到了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类)

**前置知识&#xff1a; 1、张量和通道 张量&#xff1a;多维数组&#xff0c;用来表示数据&#xff08;图像、视频等&#xff09; 通道&#xff1a;图像数据的一部分&#xff0c;表示不同的颜色或特征层 通道只是张量的其中一个维度 以一张RGB图像为例&#xff0c; 该图像…...

确保接口安全:六大方案有效解决幂等性问题

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

代码随想录算法训练营第二十九天| 93. 复原 IP 地址,78. 子集, 90. 子集 II

93. 复原 IP 地址&#xff0c;78. 子集&#xff0c; 90. 子集 II 93. 复原 IP 地址78. 子集90. 子集 II 93. 复原 IP 地址 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 0 0 到 255 255 255之间组成&#xff0c;且不能含有前导 0 0 0&#xff09;&#xff0c;整…...

【WebGis开发 - Cesium】三维可视化项目教程---初始化场景

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

点云中ICP算法的详解

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

抽象类Abstart Class

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

Redis:通用命令 数据类型

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

【Python高级编程】探索Python库:创建引人入胜的交互界面

1.制作交互界面常用到的库 在 Python 中&#xff0c;有多个库可以用于创建交互界面&#xff08;GUI&#xff09;。 以下是一些常用的 Python GUI 库&#xff1a; Tkinter: Python 的标准 GUI 库&#xff0c;通常随 Python 一起安装。简单易用&#xff0c;适合快速开发小型应用…...

别再手动调顺序了!用Vue3+Element Plus+Sortable.js给你的表格加个拖拽编辑弹窗(附完整代码)

Vue3Element PlusSortable.js打造高交互表格编辑弹窗实战 后台管理系统开发中&#xff0c;表格数据的顺序调整和字段管理一直是高频痛点。传统方案往往需要反复点击"上移/下移"按钮或填写表单参数&#xff0c;操作繁琐且体验割裂。本文将带你实现一个弹窗内一站式拖…...

告别卡顿与路径混乱:手把手教你配置ArcMap 10.x的个性化工作环境

告别卡顿与路径混乱&#xff1a;手把手教你配置ArcMap 10.x的个性化工作环境 ArcMap作为GIS领域的经典工具&#xff0c;其功能强大但默认配置往往无法满足专业用户的效率需求。许多GIS从业者都经历过这样的困扰&#xff1a;软件启动缓慢、数据路径杂乱无章、常用工具隐藏过深。…...

LabWindows/CVI报错

NON-FATAL RUN-TIME ERROR: "main.c", line 488, col 9, thread id 0x000057C4: Function GetCtrlVal: (return value -13 [0xfffffff3]). Invalid control ID 该怎么解决啊各位...

日本留学中介避坑指南:免费申请与实体保障,哪种模式更适合你?

摘要随着赴日留学热度持续攀升&#xff0c;市面上的日本留学中介机构也如雨后春笋般涌现。对于计划通过语言学校过渡并升学的学生及家庭而言&#xff0c;如何在‘免费申请’与‘传统收费’、‘线上服务’与‘实体保障’之间做出抉择&#xff0c;往往充满困惑与信息不对称。本文…...

3个步骤解锁QQ音乐加密文件:QMCDecode让音乐重获自由

3个步骤解锁QQ音乐加密文件&#xff1a;QMCDecode让音乐重获自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转…...

OpenClaw语音交互方案:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF对接语音输入输出模块

OpenClaw语音交互方案&#xff1a;Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF对接语音输入输出模块 1. 为什么需要语音交互能力 去年冬天的一个深夜&#xff0c;我正蜷在沙发上调试一个自动化脚本&#xff0c;突然意识到——当双手被咖啡杯占据时&#xff0c;用语…...

PDF-Parser-1.0一键部署教程:5分钟搞定文档解析神器,小白也能轻松上手

PDF-Parser-1.0一键部署教程&#xff1a;5分钟搞定文档解析神器&#xff0c;小白也能轻松上手 1. 为什么你需要这个文档解析工具&#xff1f; 你是不是经常遇到这样的烦恼&#xff1f; 下载了一份重要的PDF报告&#xff0c;想把里面的表格数据整理到Excel里&#xff0c;结果…...

OFA模型处理网络拓扑图:自动化生成网络设备连接描述

OFA模型处理网络拓扑图&#xff1a;自动化生成网络设备连接描述 1. 引言&#xff1a;网络工程师的文档之痛 如果你是一名网络工程师&#xff0c;或者负责过网络运维&#xff0c;一定对下面这个场景不陌生&#xff1a;面对一张密密麻麻、设备林立的网络拓扑图&#xff0c;你需…...

Qwen3.5-27B-GPTQ-Int4:超高效多模态AI新体验

Qwen3.5-27B-GPTQ-Int4&#xff1a;超高效多模态AI新体验 【免费下载链接】Qwen3.5-27B-GPTQ-Int4 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3.5-27B-GPTQ-Int4 导语 阿里云推出Qwen3.5-27B-GPTQ-Int4模型&#xff0c;通过4位量化技术实现性能与效率的双…...

各行业开发经验全面解析,本凡科技助你快速提升项目成功率

在当今快速发展的市场中&#xff0c;各行业的开发经验已成为决定项目成败的关键因素。每个行业都面临独特的挑战和需求&#xff0c;了解这些特性有助于企业制定有效的开发策略。例如&#xff0c;科技行业通常需要快速响应市场变化&#xff0c;而食品行业则需关注合规性和安全标…...