执行 git push -u origin master
时死活报下面的错:
ERROR: The key you are authenticating with has been marked as read only.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
查证:
粘贴上面的错误翻遍 Bing 和百度,甚至 ChatGPT 也问过了,告诉我下面的解决方案:
For Bing:
1.配置 ssh key 的时候勾选下面的 Allow write access 就可以了,在 settings 的 deploy key 栏目看到这个就说明有读> 写权限了。
结论:放屁
2.巴拉巴拉告诉我一堆,要我先检查是否有私钥,要是没有要我新建,要是有要我添加。
结论:放屁
For ChatGPT:
这个错误消息通常表示您正在尝试使用标记为只读的 SSH 密钥进行身份验证,这意味着该密钥只能用于拉取(clone)或获取(fetch)远程仓库,而无法进行推送(push)操作。此外,这也可能表明您没有足够的权限来访问远程仓库。
以下是一些解决此问题的建议:
更改 SSH 密钥权限: 如果你在 GitHub,GitLab 或 Bitbucket 等 Git 服务提供商的网站上有账户,你可以登录并前往 SSH 和 GPG 密钥管理页面,然后更改你的 SSH 密钥权限,使其具有写权限。
使用具有写权限的 SSH 密钥: 如果你的 SSH 密钥被标记为只读,那么你需要使用具有写权限的 SSH 密钥。请检查你的 SSH 密钥,并尝试使用具有写权限的 SSH 密钥。
检查远程仓库的访问权限: 如果上述步骤无效,可能是因为你没有足够的权限访问远程仓库。请登录到 Git 服务提供商的网站,并检查你是否具有推送更改到远程仓库的权限。
联系 Git 服务提供商: 如果你仍然遇到问题,可能需要联系 Git 服务提供商的客服求助,他们可以帮助你解决此问题。
希望这些信息能帮到你!如果你需要更多帮助,请随时告诉我。
结论:放屁
解决方案:
其实是因为我配置了多个私钥,而 Git 默认使用配置的第一个私钥来尝试连接,然而第一个私钥的仓库确实是只读的,因此解决方案如下:
在 ~\.ssh
目录下新建 config
文件
写入配置文件如下:
# Default GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_default
# Secondary GitHub
Host github-secondary
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_secondary
在上述配置中:
"http://github.com" 和 "github-secondary" 是 Host 的别名。你可以在 git clone、git fetch、git pull
和 git push
等命令中使用这些别名来指定哪个 SSH 密钥用于连接到 GitHub。
HostName 是实际的服务器地址。在这个例子中,它始终是 "github.com"。
User 始终是 "git",这是在 GitHub 上连接到 Git 仓库时使用的标准用户名。
IdentityFile 指向你的 SSH 密钥文件。在这个例子中,"/.ssh/id_rsa_default"
是默认的 SSH 密钥,"/.ssh/id_rsa_secondary"
是第二个 SSH 密钥。
例如,要使用第二个 SSH 密钥从 GitHub 克隆仓库,你可以这样做:
bashCopy code
git clone git@github-secondary:username/repo.git
在上述命令中,"username" 是你的 GitHub 用户名,"repo" 是你的仓库名,"github-secondary" 是你在 SSH 配置文件中设置的 Host 别名。
本文由 小但 创作
全文共:1934个字
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载,均为作者原创,转载前请务必署名
最后编辑时间为: Aug 29, 2024 at 01:57 am