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


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

查看所有标签

猜你喜欢:

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

深入理解OpenCV

深入理解OpenCV

[巴西]Daniel Lelis Baggio / 刘波 / 机械工业出版社 / 2014-9 / 59

opencv是最常见的计算机视觉库之一,它提供了许多经过优化的复杂算法。本书对已掌握基本opencv技术同时想提高计算机视觉的实践经验的开发者来讲是一本非常好的书。每章都有一个单独的项目,其背景也在这些章节中进行了介绍。因此,读者可以依次学习这些项目,也可以直接跳到感兴趣的项目进行学习。 《深入理解opencv:实用计算机视觉项目解析》详细讲解9个实用的计算机视觉项目,通过本书的学习,读者可......一起来看看 《深入理解OpenCV》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具