首页 > 解决方案 > 可以拉取 Git 仓库但不能推送

问题描述

我刚刚生成了一个 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.

标签: gitgithubsshssh-keys

解决方案


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

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

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


推荐阅读