Git推送被拒绝(publickey),但已成功通过身份验证。

6

我想使用ssh将我的提交推送到github。运行ssh -T git@github.com命令后,我收到了

您已成功通过身份验证

的消息,但当我要推送我的提交时,我遇到了这个错误:

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

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

我运行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并得到相同的错误:

Permission denied (publickey)。

我也阅读了权限被拒绝(publickey)。致命错误:远程终端意外挂起以进行git pull操作,但我的公钥在.ssh文件夹中,这不是我的情况。
我阅读了错误:权限被拒绝(publickey)页面并核对所有内容。 我有什么遗漏吗?
我该怎么办? MacOS: Sierra git版本2.13.5(Apple Git-94)
根据此链接所述,我将config文件添加到我的.ssh文件夹并添加
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/work2_rsa

到IT领域。


1
当你运行 ssh-add -l 命令时会发生什么? - Michael Millar
1
你确定你拥有正确的访问权限并且仓库存在吗? - Edward Thomson
@Buccleuch 在执行 ssh-add -l 命令后,我得到了以下输出:4096 SHA256:SREQ0/2G0mT+UxUmpLWmkMramBcFxnl+onFyXgwFENk ~/.ssh/work2_rsa (RSA) 4096 SHA256:gKPZ1Hxzc6eZ/NsgnoPaJsGbdWgQV54bYAXaTym3PfY ~/.ssh/work3_rsa (RSA) - Hamed Ghadirian
@EdwardThomson 你是什么意思?我使用 sudo 运行命令并多次检查仓库。 - Hamed Ghadirian
1
你以root用户身份运行git(sudo)吗?我认为你做错了,这不应该是必要的。无论如何,请检查git是否使用你执行ssh -T时使用的那个SSH。看起来git没有相同的SSH配置。例如,请检查GIT_SSH环境变量和相关配置设置。 - hakre
你确定把公钥添加到了GitHub主页上吗? - yorammi
2个回答

3
请先运行git remote -v命令,确认以下内容:
  • 这个仓库必须是你拥有或者你参与协作的
  • 需要使用正确的ssh地址 git@github.com:<你的用户名>/<你的仓库名.git>
    (不能使用https地址,就像你昨天遇到的问题
请注意,在GitHub上需要先创建远程仓库,否则推送到不存在的仓库会产生错误。通常情况下,如果ssh地址无法正常工作,则说明该地址不符合ssh的预期格式,可能是因为~/.ssh/config文件中设置了不同的ssh地址。

我用sudo运行命令,并多次检查了仓库。

但你并没有使用sudo运行ssh git@github.com命令,因此在推送命令时也不需要使用sudo。


1
尝试使用git push -u origin master - VonC
我运行了它,仍然得到相同的错误。我将其添加到我的问题中。 - Hamed Ghadirian
1
@HamedGh p1或p2是私有存储库吗?我在https://github.com/H-Ghadirian?tab=repositories中没有看到它们。 - VonC
1
@HamedGh 你的~/.ssh文件夹中有一个名为“config”的文件吗?(你使用的是Windows、Mac还是Linux?你使用的Git版本是什么?) - VonC
对我来说,ssh-add /somewhere/yourkey 在你的情况下很有帮助。 - Lutz Büch
显示剩余3条评论

1

请仔细检查您的git配置core.sshCommand是否符合要求。

我也曾遇到过这种情况,当时我将C:\Users\<User>\.gitconfig中的内容复制到了WSL的~/.gitconfig中,但没有意识到这会将一个ssh可执行文件的路径一并复制。在WSL中,这个配置会覆盖默认配置,而应该使用默认配置。

因此,我需要运行以下命令:

git config --global --unset core.sshCommand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接