不同的 git 仓库能指定不同的 gpg 密钥吗 ? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
frylkrttj
V2EX    问与答

不同的 git 仓库能指定不同的 gpg 密钥吗 ?

  •  
  •   frylkrttj 2019-01-13 21:49:54 +08:00 2287 次点击
    这是一个创建于 2543 天前的主题,其中的信息可能已经有所发展或是发生改变。

    暑假的时候被我爸将我塞到培训班学了点东西,老师说学编程,先要学会 git emacs linux 等等这是真的吗?自从我发现了这里有趣的哥哥姐姐,就对计算机编程产生了兴趣,我这几天在实践。

    还有个很奇怪的问题,为什么我上传了我自己的 gpg 钥匙到公钥服务器,有时候用搜索命令的到有时候搜不到?

    16 条回复    2019-01-28 22:57:23 +08:00
    xiri
        1
    xiri  
       2019-01-14 03:31:37 +08:00 via Android
    用什么 emacs,vim 大法好!(:逃
    whileFalse
        2
    whileFalse  
       2019-01-14 08:46:34 +08:00
    git 也算用了四五年了,没用过 gpg ……
    frylkrttj
        3
    frylkrttj  
    OP
       2019-01-14 09:06:55 +08:00
    @whileFalse 咦。。。不用 gpg 保护 git 传输过程吗?
    whileFalse
        4
    whileFalse  
       2019-01-14 09:17:29 +08:00
    @frylkrttj 保护传输过程的是 https 和 ssh。前者不需要证书,后者使用的是 ssh 证书。
    gpg 是用来做代码签名的。

    https://ubuntuforums.org/showthread.php?t=1402933
    frylkrttj
        5
    frylkrttj  
    OP
       2019-01-14 09:25:20 +08:00
    @whileFalse 不用 gpg 要是别人也知道你 git 仓库地址怎么办?
    yuikns
        6
    yuikns  
       2019-01-15 13:17:28 +08:00
    @frylkrttj 那为啥不用私有仓库
    yuikns
        7
    yuikns  
       2019-01-15 13:23:17 +08:00
    Linux 是很好的操作系统。
    git 是很好的版本管理工具。
    emacs 是不错的编辑器。虽然我用 vim,textmate 还有 jetbrain 全家桶。

    但无论哪个,都是学习编程的既不充分又不必要前提。程序就是程序,上面那一切都是有趣的工具,是在未来某个时候可能提高你效率的重要手段(除了 emacs )。但不要因为一时的卡住而忘记学代码本身。
    julyclyde
        8
    julyclyde  
       2019-01-15 15:11:17 +08:00
    gpg 是对 commit 进行签名的吧。和 git 服务器没啥关系
    frylkrttj
        9
    frylkrttj  
    OP
       2019-01-15 22:39:15 +08:00
    @yuikns 用的是 github 的仓库
    frylkrttj
        10
    frylkrttj  
    OP
       2019-01-15 22:41:45 +08:00
    @julyclyde git 仓库不是用 gpg 核对仓库主人的吗?
    yuikns
        11
    yuikns  
       2019-01-16 06:23:17 +08:00
    @frylkrttj
    没懂...

    https://s2.ax1x.com/2019/01/16/FzvrVS.png

    不能创建私有仓库?现在免费用户也可以创建私有库了吧。


    @whileFalse 已经转的帖子已经说得很明白了。此外,网上还可以找到很多说明

    https://security.stackexchange.com/questions/120706/why-would-i-sign-my-git-commits-with-a-gpg-key-when-i-already-use-an-ssh-key-to



    首先介绍两个概念。

    authorization 是 “身份校验”,它就好像以房卡。有了房卡。马蓉可以进酒店,王宝强也可以。
    签名 (signature) 是密码学中的一个概念。
    在非对称加密算法中,公钥和私钥都是一个大素数,它们的不同名称只是公钥是给所有人知道的,而私钥只能自己知道。本质其实是一样的。这对素数可以通过一个加密一段内容,通过另一个解密。
    若别人通过公钥加密,得到一个东西,我们称为密文,我们通过私钥解密。这个被称为“加密”,理论上,只有掌握那个私钥的我才能读取那段密文。这个让那个消息作为隐私。
    反之,要是我用私钥加密一段内容,而公众使用公钥解密,这个被称为签名。它的好处是证明这段内容是我发出的,而不可能是任何其它人。
    不过,RSA 的加密和解密都很复杂,而且我们有时候并不需要那么复杂,那么我们可以基于散列( hash )生成一个信息摘要( message digest )。它长度会比较短,我们不能从摘要中生成原文,但是我们可以用它检查原文的正确性和完整性。
    比如我们准备一个王宝强的摘要,照片,身高,声音等等。那么宋 JJ 跑马蓉房间,我们抓住他,然后和摘要对比,那么很容易可以证明进马蓉房间的不是王宝强。



    简单翻译下上面那个链接的内容,作为补充说明:

    当你使用 ssh 密钥对 gh 身份验证后,验证信息本身不会存储起来。github 只是临时提供了一条让你读写的途径,但不会和任何不在 github 的人证明任何(身份相关的)信息。

    当你 gpg 签名一个 tag 后。这个 tag 就是这个库的一部分,它可以被 push 到其它仓库。因此,clone 这个库的别人也能很容易验证这是你签名的,然后就可以像相信你一样相信那个内容。

    然而,对每个 commit 进行 gpg 签名是不必要的。但在发布带 gpg 签名的 tag 是明智的。它提供了一些明确的保证:

    + 这个代码若有问题和你有关
    + 这个代码是你提交的
    + 在你签名后,这个提交没有修改过

    这个并不是说你干了这些事,而只是提供追踪和确认的一个正确方向。
    yuikns
        12
    yuikns  
       2019-01-16 06:26:54 +08:00
    ssh/https 保证了传输的数据流是安全的。

    github 上代码不想别人看到可以用私有库。即便免费账户也可以受限使用它。


    gpg 干的是另外一些事情。如上一楼提到的。
    julyclyde
        13
    julyclyde  
       2019-01-16 16:18:58 +08:00
    @frylkrttj 不是
    frylkrttj
        14
    frylkrttj  
    OP
       2019-01-16 16:22:06 +08:00
    @yuikns 看得我头大
    frylkrttj
        15
    frylkrttj  
    OP
       2019-01-28 21:25:56 +08:00
    @yuikns ssh 登录公钥私钥可以互换吗? 还是服务器只能用公钥或者私钥?

    我把 gpg 公钥传到服务器, 私钥里有生成了一把 ssh 认证用的 [A] 特征私钥匙,这样能用吗?

    由于没有服务器我就没法做实验了,但想知道。
    yuikns
        16
    yuikns  
       2019-01-28 22:57:23 +08:00 via iPhone
    @frylkrttj 思而不学则民科。你这问题语文又没及格,而且我也回答过。
    rsa 是算法,gpg,ssh 是两个不同的协议,只是有时候它们都使用 rsa 而已。对 rsa 说,密钥本质就是两个大素数,私钥公钥一个加密一个解密是角色。
    若两者都是 rsa,那么取出素数转换下格式**重新上传原本的私钥**后,可以用原本的公钥做私钥是可能的。

    这是我最后一遍重复这破答案,虽然我觉得你还是会继续问鸽子为什么这么大,但我可没那么多功夫和你重复这些没用的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2336 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 11:27 PVG 19:27 LAX 03:27 JFK 06:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86