十八比特 十八比特
⚡ 18bit DNS (opens new window)
🏠 主页
  • 🌐 网站
  • 📦 资源
  • 📝 教程
  • 📐 制表符
  • 🗃️ 分类
  • 🏷️ 标签
  • 🗄️ 归档
📃 文章日志
ℹ️ 关于

十八比特

风带来故事的种子,时间使之发芽
⚡ 18bit DNS (opens new window)
🏠 主页
  • 🌐 网站
  • 📦 资源
  • 📝 教程
  • 📐 制表符
  • 🗃️ 分类
  • 🏷️ 标签
  • 🗄️ 归档
📃 文章日志
ℹ️ 关于
  • 技术文档

  • 技术教程

  • Git工具

    • Git配置ssh链接远程仓库
    • 用 GPG 签名 GitHub的Commit
      • 1. 安装GPG
      • 2. 生成GPG密钥
      • 3. Git设置
      • 4. 获得公钥
      • 5. 上传公钥到GitHub
      • 6. 额外的命令补充
  • Nodejs

  • Linux安全

  • 技术
  • Git工具
秋澪冬安
2020-11-06
目录

用 GPG 签名 GitHub的Commit

摘自维基百科

GNU Privacy Guard(GnuPG或GPG)是一个密码学软件,用于加密、签名通信内容及管理非对称密码学的密钥。GnuPG是自由软件,遵循IETF订定的OpenPGP技术标准设计,并与PGP保持兼容。

如果用 GitHub 客户端或者在 GitHub 网页上操作 git 都会在 commits 中留下 Verified 的标记, 这表示该 commit 是在 GitHub 上创建的,使用 GitHub 的 key 对这个提交进行了签名。 但 GitHub 客户端或者 GitHub 网页并不是签名 commit 的唯一方法,我们也可以通过 GnuPG (GPG) 来签名我们的 commit。

# 1. 安装GPG

Linux 一般都是自带GPG,可以直接使用
如果没有可使用如下命令:

# Debian、Ubuntu 等
    apt-get install gnupg

# Redhat、Centos、Fedora 等
    yum install gnupg

Windows 中MinGW带有GPG,而 Windows 版的 Git 基于 MinGW 的,所以直接使用git bash就行

# 2. 生成GPG密钥

git bash中使用命令:gpg --gen-key

$ gpg --gen-key
gpg (GnuPG) 2.2.15; Copyright (C) 2019 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.

注意:使用 “gpg --full-generate-key” 以获得一个功能完整的密钥产生对话框。

GnuPG 需要构建用户标识以辨认您的密钥。

真实姓名: name
电子邮件地址: name@qq.com

然后输入 O 确定

更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? o

然后会提示你

我们需要生成大量的随机字节。在质数生成期间做些其他操作(敲打键盘、移动鼠标、读写硬盘之类的)将会是一个不错的主意;
这会让随机数发生器有更好的机会获得足够的熵

之后会弹出对话框让你输入密码 密钥生成完成之后,记下密钥 ID 43948FGB5418156F

gpg: 密钥 43948FGB5418156F 被标记为绝对信任
gpg: 吊销证书已被存储为‘/home/name/.gnupg/openpgp-revocs.d/DC4E79EFEE5E224A20E9013A43948FGB5418156F.rev’
公钥和私钥已经生成并被签名。

pub   rsa2048 2020-11-6 [SC] [有效至:2022-11-6]
      DC4E79EFEE5E224A20E9013A43948FGB5418156F
uid                      name <name@qq.com>
sub   rsa2048 2020-11-6 [E] [有效至:2022-11-6]

# 3. Git设置

提示

想全局设置,在命令中加上 --global 参数

让 Git 使用我们的密钥来对 commit 进行签名

git config user.signingkey <密钥ID>

设置 Git 使用该密钥加密 commit

git config commit.gpgsign true

顺便设置 Git 全局使用该密钥加密 tag

git config tag.forcesignannotated true

# 4. 获得公钥

公钥文件是以二进制的形式储存的,我们使用 --armor 参数将它转换成 ASCII 码的形式输出

gpg --armor --export <密钥ID>

复制输出的公钥

# 5. 上传公钥到GitHub

在 GitHub 的设置页面的 SSH and GPG keys,点击 New GPG key添加就行
以后你在这台计算机推送到 GitHub 的 commit 就都带有 GPG 签名了

# 6. 额外的命令补充

  • 列出密钥:gpg --list-keys
  • 删除私钥:gpg --delete-secret-keys <密钥ID>
  • 删除公钥:gpg --delete-keys <密钥ID>
#Git#GPG
上次编辑: 2024/08/30, 16:21:31

← Git配置ssh链接远程仓库 npm和yarn全局安装及缓存路径修改→

最近更新
01
SSH跳板机访问内网服务
06-16
02
GPG 导出导入命令
06-16
03
从零开始的 All In One
06-14
更多文章>
Theme by Vdoing | Copyright © 2020-2025 十八比特 | 蜀ICP备2022002410号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式