繁体   English   中英

Git 推送权限被拒绝(公钥)但成功通过身份验证

[英]Git push permission denied (publickey) but successfully authenticated

我想用 ssh 将我的提交推送到 github。我得到

您已成功通过身份验证

运行ssh -T git@github.com命令后出现消息,但是当我想推送我的提交时,出现此错误:

权限被拒绝(公钥)。 致命:无法从远程存储库读取。

请确保您拥有正确的访问权限并且存储库存在。

我运行ssh-add -l命令,我得到

4096 SHA256:SREQ0/2G0mT+UxUmpLWmkMramBcFxnl+onFyXgwFENk ~/.ssh/work2_rsa (RSA) 4096 SHA256:gKPZ1Hxzc6eZ/NsgnoPaJsGbdWgQV54bYAXaTym3PfY ~/.ssh/work3_rsa (RSA)

我运行git remote -v我得到

origin  git@github.com:H-Ghadirian/UdacitySillySong.git (fetch)
origin  git@github.com:H-Ghadirian/UdacitySillySong.git (push)
sillySong   git@github.com:H-Ghadirian/UdacitySillySong.git (fetch)
sillySong   git@github.com:H-Ghadirian/UdacitySillySong.git (push)

我读了这篇文章 它与我的问题非常相似,但sudo没有解决我的问题。

我也运行git push -u origin master并得到同样的错误:

权限被拒绝(公钥)。

我还阅读了权限被拒绝(公钥)。 致命:远程端意外挂断 git 拉但我的公钥在.ssh 文件夹中,那不是我的情况

我读了这个页面: 错误:权限被拒绝(公钥)并检查所有。 我错过了什么?

我应该怎么办?

苹果操作系统:塞拉利昂

git 版本2.13.5 (Apple Git-94)

正如这个链接所描述的,我将config文件添加到我的.ssh文件夹中并添加

Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/work2_rsa

给它。

首先检查git remote -v确实返回的内容:

  • 它需要是你拥有的回购或者你是合作者
  • 它必须是正确的ssh url git@github.com:<you>/<yourRepo.git>
    (而不是昨天你问题中的https)

为了清楚起见,您需要首先在GitHub上创建远程仓库:推送到不存在的仓库会产生该错误。

通常,ssh url不工作意味着所述URL不是按照ssh期望的方式编写的。
由于~/.ssh/config中的ssh config文件,ssh可能会期望不同的URL。

我用sudo运行命令并多次检查repo。

你没有用sudi运行你的ssh git@github.com ,这意味着你的push命令也不需要sudo

仔细检查您的 git 配置core.sshCommand是否符合预期。

在这种情况下,我还通过将我的.gitconfigC:\Users\<User>\.gitconfig到 WSL 中的~/.gitconfig而结束了这种情况,但没有意识到沿着路径复制到 ssh 可执行文件。 在 WSL 中,该配置隐藏了默认设置; 默认应该运行。

所以我不得不跑

git config --global --unset core.sshCommand

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM