首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

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

  •  
  •   frylkrttj · 330 天前 · 947 次点击
    这是一个创建于 330 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    https://ubuntuforums.org/showthread.php?t=1402933
        5
    frylkrttj   329 天前
    @whileFalse 不用 gpg 要是别人也知道你 git 仓库地址怎么办?
        6
    yuikns   328 天前
    @frylkrttj 那为啥不用私有仓库
        7
    yuikns   328 天前
    Linux 是很好的操作系统。
    git 是很好的版本管理工具。
    emacs 是不错的编辑器。虽然我用 vim,textmate 还有 jetbrain 全家桶。

    但无论哪个,都是学习编程的既不充分又不必要前提。程序就是程序,上面那一切都是有趣的工具,是在未来某个时候可能提高你效率的重要手段(除了 emacs )。但不要因为一时的卡住而忘记学代码本身。
        8
    julyclyde   328 天前
    gpg 是对 commit 进行签名的吧。和 git 服务器没啥关系
        9
    frylkrttj   328 天前
    @yuikns 用的是 github 的仓库
        10
    frylkrttj   328 天前
    @julyclyde git 仓库不是用 gpg 核对仓库主人的吗?
        11
    yuikns   328 天前
    @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 是明智的。它提供了一些明确的保证:

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

    这个并不是说你干了这些事,而只是提供追踪和确认的一个正确方向。
        12
    yuikns   328 天前
    ssh/https 保证了传输的数据流是安全的。

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


    gpg 干的是另外一些事情。如上一楼提到的。
        13
    julyclyde   327 天前
    @frylkrttj 不是
        14
    frylkrttj   327 天前
    @yuikns 看得我头大
        15
    frylkrttj   315 天前
    @yuikns ssh 登录公钥私钥可以互换吗? 还是服务器只能用公钥或者私钥?

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

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

    这是我最后一遍重复这破答案,虽然我觉得你还是会继续问鸽子为什么这么大,但我可没那么多功夫和你重复这些没用的。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2219 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 00:33 · PVG 08:33 · LAX 16:33 · JFK 19:33
    ♥ Do have faith in what you're doing.