【Git 学习笔记_27】DIY 实战篇:利用 DeepSeek 实现 GitHub 的 GPG 秘钥创建与配置

文章目录

    • 1 前言
    • 2 准备工作
    • 3 具体配置过程
      • 3.1. 本地生成 GPG 密钥
      • 3.2. 导出 GPG 密钥
      • 3.3. 将密钥配置到 Git 中
      • 3.4. 测试提交
    • 4 问题排查记录
    • 5 小结与复盘

1 前言

昨天在更新我的第二个 Vim 专栏《Mastering Vim (2nd Ed.)》时遇到一个经典的 Git 操作问题:如何在 WSL 环境下,将本地已有的 Git 仓库和 GitHub 远程仓库进行关联、并实现同步推送?在尝试传统的 HTTPS 协议推送失败后 1,当时为了节约时间,我改用 SSH + RSA 密钥对解决了这个问题。配置结束后,我又看到了曾被多次忽略的 GPG 秘钥设置:

图 1:GitHub 秘钥配置页上的 GPG 管理界面

【图 1:GitHub 秘钥配置页上的 GPG 管理界面】

今天刚好有空就试了下用 DeepSeek 来指导我完成 GPG 秘钥的配置,发现实战过程中还是有些坑值得注意。特此梳理并分享出来,让更多后来者少走些弯路。

2 准备工作

操作系统:Windows 自带的 WSL 环境、Ubuntu v20.04

Gitv2.25.1

3 具体配置过程

3.1. 本地生成 GPG 密钥

执行以下命令:

$ gpg --full-generate-key

然后根据提示秘钥类型,这里选择默认的 RSA and RSA 类型:

图 2:秘钥类型选择默认的 “RSA 与 RSA” 型

【图 2:秘钥类型选择默认的 “RSA 与 RSA” 型】

接着需要设置秘钥长度(keysize),保险起见我填最大的 4096

图 3:秘钥长度填最大长度 4096

【图 3:秘钥长度填最大长度 4096】

然后是设置有效期(默认永久有效,保持默认即可):

图 4:设置有效期(默认永久有效)

【图 4:设置有效期(默认永久有效)】

按回车键后,系统会再次让你确认(毕竟是永久有效,存在潜在安全风险)。输入 y 确认即可:

图 5:二次确认有效期设置,输入 y 确认即可

【图 5:二次确认有效期设置,输入 y 确认即可】

然后根据提示输入登录 GitHub 用到的用户名与绑定邮箱(注意邮箱一定不能写错,否则后期匹配不上):

图 6:根据提示输入帐号、邮箱、描述信息(非必填),然后确认

【图 6:根据提示输入帐号、邮箱、描述信息(非必填),然后确认】

然后系统会提示你输入一个 passphrase,也就是安全密码,输入完毕按回车键确认,就会看到如下界面,GPG 秘钥就生成好了:

图 7:成功生成本地 GPG 密钥对后的提示界面

【图 7:成功生成本地 GPG 密钥对后的提示界面】

3.2. 导出 GPG 密钥

先获取刚生成的 GPG 密钥 ID:

$ gpg --list-keys

从给出的秘钥信息列表中复制密钥 ID:

图 8:获取 GPG 密钥 ID 信息(红框选中部分)

【图 8:获取 GPG 密钥 ID 信息(红框选中部分)】

接着输入下列命令,将密钥 ID 代入:

$ gpg --armor --export <YOUR_GPG_KEYS_ID>
-----BEGIN PGP PUBLIC KEY BLOCK-----mQINBGe6+CABEADVglzi0o4M1MdL+qH/l8S5hCt1OZJkH5QJwdgh1UjTrcD7exy7
...
1WFAIhz8gD/aM7BpipjxAPja7tp5HkKoRHi7OHEg1iVL+Kkgg5a6p2+psluI1MqG
5fMAIYTk0g4OFjYpMooTzA==
=Vqrv
-----END PGP PUBLIC KEY BLOCK-----
$ 

再将 -----BEGIN PGP PUBLIC KEY BLOCK----------END PGP PUBLIC KEY BLOCK----- 之间(包含边界)的文本内容复制到 GitHub 配置页面:

图 9:将导出的公钥信息存入 GitHub 配置页面

【图 9:将导出的公钥信息存入 GitHub 配置页面】

3.3. 将密钥配置到 Git 中

执行以下命令完成 Git 的配置:

$ git config --global user.signingkey <YOUR_KEY_ID>
$ git config --global commit.gpgsign true

3.4. 测试提交

配置成功后,就可以实际测一下代码的提交和推送了:

图 10:实测 GPG 密钥配置成功后的 commit 提交,需输入正确的安全密码

【图 10:实测 GPG 密钥配置成功后的 commit 提交,需输入正确的安全密码】

然后再试试推送到 GitHub

图 11:本地提交成功后,将 commit 节点推送至 GitHub

【图 11:本地提交成功后,将 commit 节点推送至 GitHub】

再到 GitHub 检查推送的 commit 节点,可以看到经过签名的本地提交都自带 Verified 校验标记:

图 12:在 GitHub 官网看到的已通过 GPG 签名校验的本地推送版本

【图 12:在 GitHub 官网看到的已通过 GPG 签名校验的本地推送版本】

4 问题排查记录

首次配置其实并没有这么顺利,完成 Git 的配置后提交一个本地 commit 就失败了:

$ git commit -m 'Test'
error: gpg failed to sign the data
fatal: failed to write commit object

将报错信息直接提给 DeepSeek,根据提供的报错原因逐一排查,最后发现是 GPG 默认的用于输入密码的 pinentry 程序没有配置。配置方法:打开或新建 GPG 配置文件 ~/.gnupg/gpg.conf,并输入以下内容:

pinentry-mode loopback

然后打开或新建另一个配置文件 ~/.gnupg/gpg-agent.conf,输入以下内容:

allow-loopback-pinentry

然后重启 GPG 代理:

$ gpg-connect-agent reloadagent /bye
OK
$ 

再次提交就能自动弹出提示,让你输入安全密码了。

以下为 DeepSeek 提供的问题原因排查流程(摘要):

图 13:DeepSeek 给出的问题排查清单,逐一验证到第四条时找到真正原因

【图 13:DeepSeek 给出的问题排查清单,逐一验证到第四条时找到真正原因】

此外,如果不将 loopback 模式配到 GPG 的配置文件中,还可以用以下命令进行测试:

$ echo "test" | gpg --clearsign

运行命令时会提示输密码,通过校验就会看到一串签名内容:

图 14:实测命令 gpg --clearsign 来反馈 GPG 签名是否配置成功

【图 14:实测命令 gpg --clearsign 来反馈 GPG 签名是否配置成功】

这样虽然简单些,但每次提交都得用上述命令检查一遍,效率其实并不高。

5 小结与复盘

本次和 DeepSeek 的互动没有开启推理模式,并且只在首次配置报错后才启用联网模式,实测下来效果依旧很好。由于 GPG 的本地配置之前并没有做过功课,所以也无法从提示词层面将问题描述得很精确;此时,应该果断放弃一步到位的想法,按照提供的思路进行实践,并将中途发生的异常如实提交给 DeepSeek。这比之前用谷歌百度搜索快太多了。

同时还应该注意,解决完问题后应该通读一遍和 DeepSeek 的完整对话,对配置过程中遇到的问题进行梳理复盘,主动从尝试中学习新知识。如果时间允许,还可以和 GitHub 官方公布的配置文档进行对比,找出两者的差异,在反复对比中加深印象。

正如 DeepSeek 无法一次性获知 GPG 配置时的具体环境,我们也不可能在 AI 工具的辅助下一步到位学会 GPG 的正确配置;但我们一定要保持清醒,从每次实际训练中主动完善自己的知识结构(本篇梳理也是基于这个目的)。这样才能掌握人的主动权。

为什么要特别强调这一点呢?因为最近很多朋友跟我反馈,他们在面对铺天盖地的科技新闻轰炸时,表现出的更多是深深的焦虑:AI 什么都能做了,人还做什么?我其实挺理解这种心情的,当前大家面临的困境也是前所未有的:明明知道 AI 很强大,但真正想要去了解 AI 的时候却感觉特别无力——门槛太高、众说纷纭、鱼龙混杂、泥沙俱下……过去面对一个未知领域,人们似乎还能认准大方向,也相信自己一定能弄明白;而时至今日,很多过去的美德和品质正在被 AI 的飞速发展慢慢解构:还有必要去钻研知识吗?会不会高不容易搞懂的操作和概念转眼间又被新的 AI 成果所取代?

这些问题目前都是无解的,或者只能说“都有可能”。毕竟我们经历了太长时间的缓慢积累与艰难探索,早已习惯了确定的答案和确定的道路。面对突如其来的 AI 巨变,每个人心中都对这个很可能全面超越人类的新事物心存忌惮。这种感觉,颇有点类似《超体》中女主 Lucy 第一次和 Samuel Norman 教授通话时,双方几乎同时表现出的迷茫和困顿的那一幕。但我认为,人还是不能沉湎于这样的迷茫的,而是坦然接受未来的不确定性,并且尽一切可能守护好自己的主观能动性。AI 越是强大,越不能在它面前缴械投降,而应该时刻保持主动地、深度地思考的习惯。


  1. 出于安全考虑,GitHub 官方已于 2021 年 8 月起禁止使用基于 HTTPS 协议的用户名/密码校验来推送 Git 代码库。 ↩︎

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H5 火柴人科目三和GitHub获取仓库点星星的用户列表发生了艺术的碰撞

先看效果&#xff0c;代码写的比较乱&#xff0c;有待优化 效果 https://linyisonger.github.io/H5.Examples/?name./089.%E7%9C%8B%E6%98%9F%E6%98%9F%E7%9A%84%E8%88%9E%E8%80%85.html 思路 看起来很简单&#xff0c;实则也不是很难&#xff0c;就是需要思路要打开。 一…

阿里云k8s服务部署操作一指禅

文章目录 DockerFile镜像操作阿里云k8s服务部署 DockerFile # 使用 JDK 17 官方镜像 # linux架构&#xff1a;FROM --platformlinux/amd64 openjdk:17-jdk-slim # arm架构&#xff1a;openjdk:17-jdk-slim FROM --platformlinux/amd64 openjdk:17-jdk-slim# 设置工作目录 WORK…

【算法】游艇租贷

问题 ⻓江游艇俱乐部在⻓江上设置了 n 个游艇租聘站&#xff0c;游客可以在这些租聘站租 ⽤游艇&#xff0c;然后在下游的任何⼀个租聘站归还。游艇出租站 i 到 j 的租⾦为 r(i, j)&#xff0c;1 ≤i< j≤n&#xff0c;设计⼀个算法&#xff0c;计算从出租站 i 到 j 所需的…

AnythingLLM安装包下载+CUDA安装包下载地址,提升GPU性能【语义熔炉网】

一、安装包下载地址 1. AnythingLLM安装包 &#xff08;支持Windows/macOS/Linux&#xff0c;部分用户反馈需科学上网&#xff09;国内镜像备份&#xff08;含DeepSeek相关工具&#xff09;&#xff1a;www.mix688.com/118.html 2. CUDA安装包 国内镜像&#xff08;若官网访…

【大模型】蓝耘智算平台部署DeepSeek-R1大模型使用详解

目录 一、前言 二、蓝耘智算平台介绍 2.1 蓝耘智算平台是什么 2.2 平台优势 2.3 应用场景 2.4 对DeepSeek 的支持 2.4.1 DeepSeek 简介 2.4.2 DeepSeek 优势 三、蓝耘智算平台部署DeepSeek-R1操作过程 3.1 注册账号 3.1.1 余额检查 3.2 部署DeepSeek-R1 3.2.1 获取…

本地部署deepseek-r1 ollama+anythingllm

本期笔者带给大家部署一个本地私有化知识库&#xff0c;简单明了&#xff0c;直接步入主题&#xff0c;需要读者可以继续关注支持一下啊&#xff01; 目录 背景步骤 一、环境准备二、Ollama环境部署三、AnythingLLM安装 总结 开始下载应用&#xff1a; 操作系统&#xff1a…

VSCode ssh远程连接内网服务器(不能上网的内网环境的Linux服务器)的终极解决方案

VSCode ssh远程连接内网服务器&#xff08;不能上网的内网环境的Linux服务器&#xff09; 离线下载vscode-server并安装: 如果远程端不能联网可以下载包离线安装,下载 vscode-server 的 url 需要和 vscode 客户端版本的 commit-id 对应.通过 vscode 面板的帮助->关于可以获…

计算机视觉算法实战——三维重建(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ 1. 三维重建领域简介 三维重建&#xff08;3D Reconstruction&#xff09;是计算机视觉的核心任务之一&#xff0c;旨在通过多视角图像、视频…

十、OSG学习笔记-多线程(OpenThreads)

上一节内容&#xff1a; 九、OSG学习笔记-NodeVisitor节点遍历器-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145742756?spm1001.2014.3001.5501 本章节代码&#xff1a; OsgStudy/Openthreads CuiQingCheng/OsgStudy - 码云 - 开源中国https://gite…

AI颠覆蛋白质工程:ProMEP零样本预测突变效应

概述 在生命科学的“造物革命”中&#xff0c;蛋白质工程一直面临着“试错成本”与“设计效率”的双重挑战——传统方法依赖繁复的多序列比对&#xff08;MSA&#xff09;或耗时的实验室筛选&#xff0c;如同在浩瀚的蛋白质宇宙中盲选星辰。而今日&#xff0c;一项发表于《Cel…

计算机领域里注重实战的9本书

计算机领域注重实战的书籍众多&#xff0c;以下是一些备受推崇的注重实战的计算机书籍&#xff1a; 1、Redis实战 当你需要以接近实时的速度访问快速变动的数据流时&#xff0c;Redis这样的键值数据库就是你的极好选择。通过接纳散列、字符串、列表等多种数据类型&#xff0c;…

《2024工业控制系统网络安全态势白皮书》

一、白皮书发布背景 东北大学“谛听”网络安全团队近日撰写并发布了2024年工业控制网络安全态势白皮书&#xff0c;读者可以通过报告了解2024年工控安全相关政策法规报告及典型工控安全事件分析。 二、白皮书主要内容 报告对工控系统漏洞、联网工控设备、工控蜜罐与威胁情报…

【VSCode】MicroPython环境配置

【VSCode】MicroPython环境配置 RT-Thread MicroPython 插件安装MicroPython 库文件配置结束语 RT-Thread MicroPython 插件安装 在 VSCode 拓展中搜索 “RT-Thread MicroPython” 并安装&#xff0c;详细配置步骤&#xff08;修改 VSCode 默认终端、MicroPython 代码补全&…

如何在VMware虚拟机的window10系统中安装网易mumu模拟器

安卓模拟器是可以在电脑的windows环境中运行手机软件的工具,喜欢网游或者是要逆向安卓应用应该都要安装这个模拟器,如果要模拟器正常工作,主机的虚拟化应该开启,也就是要开启vt。在有些情况下,需要把模拟器安装到电脑的虚拟机里,隔离模拟器与主机,这时vt的开启就稍麻烦些…

Mac本地部署DeepSeek-r1

一、安装DeepSeek 1.1 安装ollama模型管理器 ollama官网下载安装包&#xff1a;https://ollama.com/ 看到mac右上方工具图标出现小羊驼&#xff0c;表示ollama已经安装成功。 2.2 安装DeepSeek 打开终端&#xff0c;输入命令&#xff1a;ollama run deepseek-r1:1.5b&…

单页图床HTML源码+本地API接口图床系统修复版源码

源码介绍 图床系统是一种用于存储和管理图片文件的在线服务。它允许用户上传图片文件&#xff0c;并生成相应的图片链接&#xff0c;从而方便用户在网页、社交媒体或其他平台上分享图片。 PS:源码压缩包分为两个版本&#xff0c;一个是调用360第三方api接口&#xff0c;另外一…

初级渗透测试工程师需要学什么?网络安全零基础入门到精通教程建议收藏!

1、前言 本文主要介绍如何成为一名初级的渗透测试工程师所需要学习的内容&#xff0c;后续也会基于此将自己的学习总结、心得记录下来。相信在不断坚持下&#xff0c;争取在今年五月初成为一名初级的渗透测试工程师。 2、涉及知识领域 基础网络知识&#xff1a; 理解TCP/IP协…

DeepSeek写俄罗斯方块手机小游戏

DeepSeek写俄罗斯方块手机小游戏 提问 根据提的要求&#xff0c;让DeepSeek整理的需求&#xff0c;进行提问&#xff0c;内容如下&#xff1a; 请生成一个包含以下功能的可运行移动端俄罗斯方块H5文件&#xff1a; 核心功能要求 原生JavaScript实现&#xff0c;适配手机屏幕 …

网络安全营运周报

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 第三章网络安全基础 一、网络安全概述 1、网络安全现状及安全挑战 网络安全范畴极其广泛&#xff0c;可以说是涉及多方面。 因为计算机病毒层出不穷以及黑客的…

C#中级教程(1)——解锁 C# 编程的调试与错误处理秘籍

一、认识错误&#xff1a;编程路上的 “绊脚石” 在 C# 编程中&#xff0c;错误大致可分为两类&#xff1a;语法错误和语义错误&#xff08;逻辑错误&#xff09;。语法错误就像是写作文时的错别字和病句&#xff0c;编译器一眼就能识别出来&#xff0c;比如变量名拼写错误、符…