Git的GPG签名 —— Tag签名 Verified验证,防伪造的gitee/github commit验证
相关资料:
如何使用git通过ssh协议拉取gitee上的项目代码——如何正确的免密使用git
不论是gitee还是GitHub都有两种公钥设置,一种是ssh公钥,另一种则是GPG公钥。ssh公钥是为了在进行git pull和git push操作时进行免密验证的;而GPG公钥是在git tag和git commit时进行验证的。不过需要注意的是,如果不进行ssh公钥设置,那么在进行git pull和git push时都是需要在每次操作的时候进行用户名和密码认证的,因此进行ssh公钥验证会使git的操作简化,但是GPG公钥如果不进行设置是不会有任何影响的,不会对git的tag和commit操作有任何影响,完全可以在无验证的情况下进行git tag和git commit操作,如果你对git项目中的tag和commit操作进行了GPG的公钥设置,那么在每次进行git tag和git commit操作的时候可以手动加入指定GPG私钥签名的的参数,这样推送到远端的代码就会显示已被GPG验证的信息,否则git的tag和commit操作在远端会显示签名状态为未验证。
可以说,设置git的ssh公钥会简化git pull和git push的密码验证,但是设置git的GPG公钥则会增加git的操作步骤。
git的ssh公钥是为了确认你有访问并修改git远端仓库的资格,但是git的远端代码库往往是多人合作的,也就是说同时可以有多个人对git的远端仓库进行代码的提交和修改,这个时候这几个合作者之间的身份是无法确认的,比如一个项目有A、B、C三个人合作,这三个人均有可以访问代码库的ssh公钥,但是对于每一次的git的tag和commit操作是无法确认到底是A、B、C三个人中到底是哪一个操作的(用户名和邮箱并不是信息不变的,无法作为身份的唯一验证的),而这个时候项目的总负责人就可以通过设置GPG公钥来实现对每一次的tag和commit进行身份验证,这样合并到远端代码库中的所有操作都可以定位到具体人,这样即使有人恶意添加后门代码或者是删库我们也是可以直接定位到具体的操作者的。这也是git的GPG公钥设置的意义,如果是个人维护的项目就没有必要进行GPG公钥的设置了,否则就是为自己的操作增加工作罢了,但是对于多人合作的项目还是很有必要添加GPG公钥认证的。
给出Gitee的ssh公钥和GPG公钥设置页面:
关于Tag的使用以及GPG秘钥生成和使用,详细见:
这里只给出基本操作:
GPG秘钥生成:
gpg --full-generate-key --pinentry-mode=loopback
GPG公钥导出:
gpg --armor --export 8086B4D21B3118A83CC16CEBB0A02972E266DD6D
为本地主机的git配置刚才生成的GPG私钥:
git config --global user.signingkey 8086B4D21B3118A83CC16CEBB0A02972E266DD6D
将导出的GPG公钥填入到Gitee和Github的配置中。
在本地的git项目中对commit操作进行GPG私钥签名:
git commit -S -m "YOUR COMMIT MESSAGE" git log --show-signature # 查看签名状态
在本地的git项目中对tag操作进行GPG私钥签名:
git tag -s v1.0.0 -m "version comments" git push origin v1.0.0 # v1.0.0您可以自行定义
需要注意,git tag -s v1.0.0 -m "version comments" 是使用GPG私钥签名,
git tag -a v1.0.0 -m "version commets"是不使用GPG私钥签名。
也就是说,-s是使用GPG私钥签名打tag,-a是不使用GPG私钥签名打tag。
GPG秘钥的生成:
PS. 不论是SSH公钥和GPG公钥的验证都有一前提,那就是私钥是保存在个人手上的,并且是不会被泄露的,因为谁持有私钥谁就具有相应的操作权限。
posted on 2024-01-02 14:10 Angry_Panda 阅读(185) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
2022-01-02 “杀手机器人”是否应该存在,我们又改如何应对
2022-01-02 【转载】 详解nohup /dev/null 2>&1 含义的使用
2021-01-02 并行化强化学习 —— 初探 —— 并行reinforce算法的尝试 (上篇:强化学习在多仿真环境下单步交互并行化设计的可行性)
2019-01-02 2019年一月一日 元旦实验室开会 会议纪要