git - 可以拉取 Git 仓库但不能推送
问题描述
我刚刚生成了一个 SSH 密钥并将其添加到我在 Linux Mint 终端中的 ssh-agent 中。然后我复制了.pub
文件的内容并粘贴到 GitHub 用户范围的 SSH 密钥框中。我打电话git pull
,它工作。我打电话add
,commit
一切似乎都很好。
但后来我打电话给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.
解决方案
当您将生成的公钥上传到 GitHub 时,您将其放入 per-repository deploy key 框中。部署密钥是设计用于在单个存储库上操作的 SSH 密钥,默认情况下它们是只读的。如果您希望密钥是可读写的,则必须在添加公钥时选中该框。这是因为在许多情况下,部署密钥仅用于部署代码,因此最好不要授予他们不需要的访问权限。但是,它们也可以用于其他机器操作,因此可以进行写访问。
由于您已经上传了它,因此您必须从 GitHub 中删除部署密钥并重新添加它,因为无法更改现有密钥的设置。当您重新添加它时,请选中“允许写入访问”复选框。</p>
如果您希望这适用于您的整个用户帐户,而不仅仅是这个特定的存储库,那么您需要删除部署密钥条目并将其上传到您的用户设置中。您必须首先删除部署密钥条目,因为同一密钥只能用于一个目的,并且该密钥标识参与者(用户或部署密钥)和权限。
推荐阅读
- python-3.x - 使用 Django 创建 Strava Webhook 订阅
- iframe - Sharepoint MS-WOPI 客户端在编辑时拒绝框架到 iframe,但在预览时允许框架
- arrays - laravel刀片中的调用关系
- javascript - 呼叫恢复异常
- python - 如何从多行字符串中获取字符串直到匹配后的行尾
- macos - 带参数的 Zsh 函数停止使用 AppleScript
- python - 在 pycharm 中设置 monodepth2 网络时出现错误消息
- java - 在已发布的 Tomcat 10 上运行 Vaadin 7/8 Web 应用程序是否存在任何已知的兼容性问题?
- reactjs - 如何在 Typescript 中将 ref prop 和 useRef 与 Lottie 文件一起使用?
- laravel - Laravel:重命名资源路由的路由名称