[{"data":1,"prerenderedAt":297},["ShallowReactive",2],{"content:\u002Fposts\u002F2023\u002Fadd-gpg":3,"surround:\u002Fposts\u002F2023\u002Fadd-gpg":285},{"id":4,"title":5,"body":6,"canonical":254,"categories":255,"date":257,"description":258,"draft":259,"extension":260,"image":254,"meta":261,"navigation":262,"path":263,"permalink":254,"readingTime":264,"recommend":254,"references":269,"seo":279,"sitemap":280,"stem":281,"tags":282,"type":254,"updated":257,"__hash__":284},"content\u002Fposts\u002F2023\u002Fadd-gpg.md","添加gpg签名",{"type":7,"value":8,"toc":243},"minimark",[9,14,25,33,37,44,50,81,89,125,129,132,138,141,147,150,156,159,167,173,183,189,198,201,204,210,217,223,226,233,236],[10,11,13],"h2",{"id":12},"安装-gpg","安装 gpg",[15,16,22],"pre",{"className":17,"code":19,"language":20,"meta":21},[18],"language-shell","brew install gpg\n","shell","",[23,24,19],"code",{"__ignoreMap":21},[26,27,28,29,32],"p",{},"确认是否安装成功：输入",[23,30,31],{"code":31},"gpg -h"," 后，没有报错并有 gpg 相关的帮助文档的话就安装成功了。",[10,34,36],{"id":35},"生成-gpg-密钥","生成 gpg 密钥",[38,39,40],"ol",{},[41,42,43],"li",{},"输入生成 gpg 密钥对的命令",[15,45,48],{"className":46,"code":47,"language":20,"meta":21},[18],"gpg --full-generate-key\n",[23,49,47],{"__ignoreMap":21},[38,51,53,56,59,62,65,68,71,78],{"start":52},2,[41,54,55],{},"提示要生成的加密类型，或者直接 enter 默认",[41,57,58],{},"提示要生成的密钥大小，直接 enter 默认",[41,60,61],{},"输入密钥的有效时常，直接 enter 默认（不会过期）",[41,63,64],{},"验证是否输入正确，确认之前输入的是否是自己想要的，如果是就确认",[41,66,67],{},"输入用户信息：按照提示输入真实姓名、邮箱（和 GitHub 绑定的邮箱）",[41,69,70],{},"提示输入密码：在查看生成的公钥会用到",[41,72,73,74,77],{},"命令行输入 ",[23,75,76],{"code":76},"gpg --list-secret-keys --keyid-format=long","，展示所有生成的 gpg 密钥",[41,79,80],{},"获取要上传至 GitHub 的密钥 id： sec rsa3072\u002Fxxx 中的 xxx 就是对应的密钥 id",[15,82,87],{"className":83,"code":85,"language":86,"meta":21},[84],"language-txt","sec   rsa3072\u002Fxxx 2023-01-16 [SC]\n      xxx\nuid                   [ 绝对 ] xxx (github use) \u003Cxxx@xx.com>\nssb   rsa3072\u002Fxxx 2023-01-16 [E]\n","txt",[23,88,85],{"__ignoreMap":21},[38,90,92,99,116],{"start":91},10,[41,93,94,95,98],{},"输入 ",[23,96,97],{"code":97},"gpg --armor --export 3AA5C34371567BD2"," 查看生成的公钥",[41,100,101,102],{},"复制以 -----BEGIN PGP PUBLIC KEY BLOCK----- 开头并以 -----END PGP PUBLIC KEY BLOCK----- 结尾的 GPG 密钥。",[103,104,105],"blockquote",{},[26,106,107,108,111,112,115],{},"注意： 一定要将打印出的所有内容都粘贴，包括 ",[23,109,110],{"code":110},"-----BEGIN PGP PUBLIC KEY BLOCK-----"," 和 ",[23,113,114],{"code":114},"-----END PGP PUBLIC KEY BLOCK-----","。不然添加会失败",[41,117,118,119],{},"在 GitHub 中添加\n",[120,121,122],"a",{"href":122,"rel":123},"https:\u002F\u002Fdocs.github.com\u002Fzh\u002Fauthentication\u002Fmanaging-commit-signature-verification\u002Fadding-a-gpg-key-to-your-github-account",[124],"nofollow",[10,126,128],{"id":127},"添加-git-处理","添加 git 处理",[26,130,131],{},"配置让 git 使用 gpg 进行签名",[15,133,136],{"className":134,"code":135,"language":20,"meta":21},[18],"git config --global user.signingkey \u003C密钥ID>\n",[23,137,135],{"__ignoreMap":21},[26,139,140],{},"设置 git 全局使用该密钥加密 commit",[15,142,145],{"className":143,"code":144,"language":20,"meta":21},[18],"git config --global commit.gpgsign true\n",[23,146,144],{"__ignoreMap":21},[26,148,149],{},"设置 git 全局使用该密钥进行加密 tag",[15,151,154],{"className":152,"code":153,"language":20,"meta":21},[18]," git config --global tag.forcesignannotated true\n",[23,155,153],{"__ignoreMap":21},[10,157,158],{"id":158},"报错处理",[160,161,163,164],"h3",{"id":162},"报错gpg-failed-to-sign-the-data","报错",[23,165,166],{"code":166},"gpg failed to sign the data",[26,168,169,170],{},"使用 zsh 需要添加",[23,171,172],{"code":172},"export GPG_TTY=$(tty)",[38,174,175,180],{},[41,176,177],{},[23,178,179],{"code":179},"sudo vi ~\u002F.zshrc",[41,181,182],{},"添加配置",[15,184,187],{"className":185,"code":186,"language":86,"meta":21},[84],"export GPG_TTY=$(tty)\n",[23,188,186],{"__ignoreMap":21},[38,190,192],{"start":191},3,[41,193,194,195],{},"重新加载 zsh 配置文件 ",[23,196,197],{"code":197},"source ~\u002F.zshrc",[160,199,200],{"id":200},"提交时一直报错",[26,202,203],{},"如果您之前设置了 pinentry 和 gpg，但它突然停止工作：\n检查您的 gpg 是否有效：",[15,205,208],{"className":206,"code":207,"language":20,"meta":21},[18],"echo \"test\" | gpg --clearsign\n",[23,209,207],{"__ignoreMap":21},[26,211,212,213,216],{},"如果它说",[23,214,215],{"code":215},"gpg: signing failed: No pinentry","，只需重新启动 gpg 守护程序客户端，它会不时卡住：",[15,218,221],{"className":219,"code":220,"language":20,"meta":21},[18],"gpgconf --kill gpg-agent\n",[23,222,220],{"__ignoreMap":21},[26,224,225],{},"现在它应该可以工作了：",[26,227,228,229,232],{},"可以运行",[23,230,231],{"code":231},"echo \"test\" | gpg --clearsign"," 先，会提示输入密码，输入密码后再次进行代码提交就 ok 了。",[234,235],"hr",{},[26,237,238,239,242],{},"实在不行就使用 ",[23,240,241],{"code":241},"git config --global commit.gpgsign false && git config --global tag.forcesignannotated false"," 直接关闭全局 gpg 加密",{"title":21,"searchDepth":244,"depth":244,"links":245},4,[246,247,248,249],{"id":12,"depth":52,"text":13},{"id":35,"depth":52,"text":36},{"id":127,"depth":52,"text":128},{"id":158,"depth":52,"text":158,"children":250},[251,253],{"id":162,"depth":191,"text":252},"报错gpg failed to sign the data",{"id":200,"depth":191,"text":200},null,[256],"代码","2023-01-16 14:53:13","最近在提交 vue-devui 组件库 pr 时，被要求添加 gpg 签名。之前对这部分没有任何了解，正好了解一下，顺便写一下关于配置 gpg 需要注意的东西和配置的完整步骤。",false,"md",{},true,"\u002Fposts\u002F2023\u002Fadd-gpg",{"text":265,"minutes":266,"time":267,"words":268},"3 min read",2.535,152100,507,[270,273,276],{"title":271,"link":272},"使用 GPG 签名你的 Git Commit","https:\u002F\u002Fmogeko.me\u002Fposts\u002Fzh-cn\u002F065\u002F",{"title":274,"link":275},"生成新 GPG 密钥","https:\u002F\u002Fdocs.github.com\u002Fzh\u002Fauthentication\u002Fmanaging-commit-signature-verification\u002Fgenerating-a-new-gpg-key",{"title":277,"link":278},"阮一峰 GPG入门教程","https:\u002F\u002Fwww.ruanyifeng.com\u002Fblog\u002F2013\u002F07\u002Fgpg.html",{"title":5,"description":258},{"loc":263},"posts\u002F2023\u002Fadd-gpg",[283],"gpg签名","1L-7MrAzZl6u5ibwLaq9WBjLFxj1HQhxYJLGIM7XHKM",[286,291],{"title":287,"path":288,"stem":289,"date":290,"type":254,"children":-1},"mac平台 go开发环境搭建","\u002Fposts\u002F2023\u002Fmac-go-install","posts\u002F2023\u002Fmac-go-install","2023-01-11 21:45:49",{"title":292,"path":293,"stem":294,"date":295,"type":296,"children":-1},"壬寅年癸丑月乙卯 新春","\u002Fposts\u002F2023\u002Fthe-spring-festival-of-the-year-of-the-tiger","posts\u002F2023\u002FThe Spring Festival of the Year of the Tiger","2023-01-20 21:53:58","story",1789642595092]