内容简介:在本地的 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
。
设置本地 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 网页进行提交 commit,GitHub 会自动帮我们签名。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
CGI 程序设计自学通
(美)格里高利 / 徐丹/等 / 机械工业出版社 / 1998-08 / 28.00元
本书集中讨论CGI编程,以便利用一起来看看 《CGI 程序设计自学通》 这本书的介绍吧!