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 会自动帮我们签名。


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

查看所有标签

猜你喜欢:

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

CGI 程序设计自学通

CGI 程序设计自学通

(美)格里高利 / 徐丹/等 / 机械工业出版社 / 1998-08 / 28.00元

本书集中讨论CGI编程,以便利用一起来看看 《CGI 程序设计自学通》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具