【问题标题】:Can pull for Git repo but not push可以拉取 Git 仓库但不能推送
【发布时间】:2021-06-28 23:36:15
【问题描述】:

我刚刚生成了一个 SSH 密钥并将其添加到我在 Linux Mint 终端中的 ssh-agent 中。然后我复制了.pub 文件的内容并粘贴到GitHub 用户范围的SSH 密钥框中。我打电话给git pull,它可以工作。我打电话给addcommit,一切似乎都很好。

然后我打电话给git push -u origin main,我得到了

ERROR: Permission to name/repo.git denied to deploy key
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

【问题讨论】:

    标签: git github ssh ssh-keys


    【解决方案1】:

    当您将生成的公钥上传到 GitHub 时,您将其放入每个存储库的部署密钥框中。部署密钥是设计用于在单个存储库上操作的 SSH 密钥,默认情况下它们是只读的。如果您希望密钥是可读写的,则必须在添加公钥时选中该框。这是因为在许多情况下,部署密钥仅用于部署代码,因此最好不要授予他们不需要的访问权限。不过,它们也可以用于其他机器操作,因此可以进行写访问。

    由于您已经上传了它,因此您必须从 GitHub 中删除部署密钥并重新添加它,因为无法更改现有密钥的设置。重新添加时,请选中“允许写入访问”复选框。

    如果您希望它适用于您的整个用户帐户,而不仅仅是这个特定的存储库,那么您需要删除部署密钥条目并将其上传到 your user settings。您必须先删除部署密钥条目,因为同一密钥只能用于一个目的,并且该密钥标识参与者(用户或部署密钥)和权限。

    【讨论】:

    • 我没有准确描述这一点,因为我不知道有一种方法可以为每个 repo 提供一个部署密钥。对于那个很抱歉。我一开始真正做的是将它添加到用户设置中。但是根据您所说的,我尝试将其删除并将其添加到特定的存储库中。它仍然没有工作。而且当我把它放回用户设置时,它仍然不起作用。
    • 那么请编辑您的问题以显示您在将其用作用户密钥时收到的错误消息。您收到的消息清楚地表明它是一个部署密钥,如果您继续看到该消息,这意味着它没有被用作用户密钥。
    • 哦,有趣。即使我将密钥作为用户密钥,这也是我收到的消息。所以我不确定它为什么提到部署密钥。
    • 您可能没有使用您认为正在使用的密钥。如果您有多个用于 GitHub 的密钥,请参阅 the Git FAQ entry 了解如何使其正常工作。
    • 嗯,我用我能想到的各种方式尝试了所有这些东西。我什至删除了存储库,创建了一个新密钥,更新了config 文件,其中包含我能找到的所有建议放入其中的内容,将新密钥放入用户设置中,克隆了存储库。它仍然不断提供有关部署密钥的消息,但 repo 没有部署密钥。
    【解决方案2】:
    Specifically they say add the following to ~/.ssh/config
    
    Host *
     AddKeysToAgent yes
     UseKeychain yes
     IdentityFile ~/.ssh/id_rsa
    

    https://stackoverflow.com/a/43054414/6521970

    【讨论】:

      猜你喜欢
      • 2020-05-23
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2014-04-23
      • 1970-01-01
      • 2017-11-23
      • 2013-01-03
      相关资源
      最近更新 更多