GitHub 使用 GPG 简介

栏目: 编程工具 · 发布时间: 5年前

内容简介:在本地的 git 仓库中,我们需要设置用户名和邮箱地址才能提交新的更改。值得注意的是,这并不需要跟你的 GitHub 账号的这带来了一个很严重的问题:任何人都可以设置用户名和邮箱地址来伪装成你,由于 GitHub 会自动根据用户名和邮箱地址关联单次的提交为注册的 GitHub 的账户,所以别人可以仿冒你的身份进行提交更改。

在本地的 git 仓库中,我们需要设置用户名和邮箱地址才能提交新的更改。

git config --global user.name "Mona Lisa"
git config --global user.email "email@example.com"

值得注意的是,这并不需要跟你的 GitHub 账号的 用户名 或者 邮箱地址 一致。

这带来了一个很严重的问题:任何人都可以设置用户名和邮箱地址来伪装成你,由于 GitHub 会自动根据用户名和邮箱地址关联单次的提交为注册的 GitHub 的账户,所以别人可以仿冒你的身份进行提交更改。

GitHub 使用 GPG 协议来给某次提交进行签名,从而确保了身份的合法性。

GnuPG(The GNU Privacy Guard)是 OpenGPG 的一个免费的实现版本,通常简称 GPG。本文以 macOS 操作系统为例,简单介绍如何结合 GitHub 来使用 GPG。

安装 GPG

GPG 官方提供二进制文件可以安装为命令行的形式,也可以选择第三方的带有 GUI 界面的软件。

下载 GnuPG for OS X ,安装完毕后就可以直接使用 gpg2 命令。之所以不是 gpg 是因为最新版本与 gpg 是不兼容的,你也可以两者同时安装使用。

$ gpg2
pg: WARNING: unsafe ownership on homedir '/Users/jerry/.gnupg'
gpg: failed to create temporary file '/Users/jerry/.gnupg/.#lk0x00007ff9d65038d0.jerry-rMBP.local.1880': Permission denied
gpg: keyblock resource '/Users/jerry/.gnupg/pubring.kbx': Permission denied
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: Go ahead and type your message ...

在 macOS 下面,GPG 会默认安装为 root 账户,这显然是不对的(会导致 git 也必须使用 root 账户)。GPG 推荐使用当前用户的权限即可。

$ ls -ld ~/.gnupg
drwx------  7 root  staff  224 Jan  5 20:58 /Users/jerry/.gnupg

我们可以将 GPG 文件夹权限赋给当前用户。

sudo chown -R $(whoami) ~/.gnupg

这样就不会报权限的错误了。

$ gpg2
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: Go ahead and type your message ...

创建 key

$ gpg --full-generate-key

GitHub 推荐使用 4096 位的以 RSA 协议的 key。通常我们不需要输入额外的密码(passphrase),否则每次 git commit 都需要手动输入。

查看生成的 key

$ gpg2 --list-secret-keys --keyid-format LONG
/Users/jerry/.gnupg/pubring.kbx
-------------------------------
sec   rsa4096/6446F78B91107228 2019-01-05 [SC]
      108784F9ED8F7973F877C6BA6446F78B91107228
uid                 [ultimate] JerryBian (jerry-rMBP) <JerryBian@outlook.com>
ssb   rsa4096/AB83EB5E35793D0B 2019-01-05 [E]

我们需要记下上面的 6446F78B91107228 ,这是我们的 GPG key ID。

添加到 GitHub

$ gpg2 --armor --export 6446F78B91107228
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBFwwpGwBEADtscwI22ejJbyS1BySmppADYSFTyjPwNcAololnWFsoxtg92yV
...
UEgDy5FDkeUOYw==
=BvYa
-----END PGP PUBLIC KEY BLOCK-----

GitHub 端需要知道我们的公钥,复制上述结果到 Settings ->GPG Keys-> New GPG key

GitHub 使用 GPG 简介

设置本地 Git

设置 git GPG 命令。

$ git config --global gpg.program gpg2

设置 git GPG key。

$ git config --global user.signingkey 6446F78B91107228

强制每次提交都自动使用 GPG 签名。

$ git config --global commit.gpgsign true

当我们提交新的 commit 的时候,git 就会帮我们自动使用 GPG 来签名。

GitHub 使用 GPG 简介

如果使用 GitHub 网页进行提交 commit,GitHub 会自动帮我们签名。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

国际大学生程序设计竞赛例题解

国际大学生程序设计竞赛例题解

郭嵩山 / 电子工业出版社 / 2006-5 / 32.0

《国际大学生程序设计竞赛例题解1:数论、计算几何、搜索算法专集》可以作为高等院校有关专业的研究生和本科学生参加国际大学生程序设计竞赛的辅导教材,也可作为高等院校有关专业相关课程的教材和教学参考书,也比较适合作为中学青少年信息学奥林匹克竞赛省级及省级以上优秀选手备战信息学奥林匹克竞赛的培训教材及训练题集。一起来看看 《国际大学生程序设计竞赛例题解》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码