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


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

查看所有标签

猜你喜欢:

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

个体与交互

个体与交互

Ken Howard、Barry Rogers / 贾永娜、张凯峰 / 机械工业出版社华章公司 / 2012-3-20 / 45.00元

对敏捷软件开发的关注重点,通常都集中在“机制”方面,即过程和工具。“敏捷宣言”认为,个体与交互的价值要高于过程和工具,但这一点很容易被遗忘。在敏捷开发中,如果你重新将注意力放在人的方面,将会收获巨大利益。 本书展示了如何解决敏捷团队在实际项目中遭遇的问题。同时,本书也是很有实用价值的敏捷用户指南,其中包含的故事、最佳实践方法、经验以及技巧均可应用到实际项目当中。通过逐步实践,你将学会如何让团......一起来看看 《个体与交互》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

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

HEX CMYK 互转工具