Git提交失败:Please make sure you have the correct access rights and the repository exists.

背景

不知从什么时候开始,用git提交的时候需要手动输入用户名和密码了。提交一次之后,github就发了封邮件给我,提醒我说用密码登录的方式要在今年被废弃了,让我尽快换成ssh或其他验证方式。

但是其实我之前都是用ssh验证的,也不知道是出了什么问题,只好重新添加ssh key。

先在文件管理器里右键git bash here,在终端依次输入

1
2
cd ~/.ssh
ssh-keygen -t rsa -C "github账号的邮箱地址"

一路回车,在C:/用户/(用户名)/.ssh/目录里就生成了id_rsaid_rsa.pub这两个文件,分别对应私钥和公钥。

在浏览器登录Github,点击右上角头像,找到Settings,再找到SSH and GPG keys,点击添加,把之前生成的id_rsa.pub的内容复制进去。

确认当前配置

1
git config --list

如果账户不对,就需要设置

1
2
git config --global user.name "用户名"
git config --global user.email "邮箱"

然后在终端依次输入

1
2
3
eval `ssh-agent`
ssh-add
ssh -T git@github.com

一般这样做之后就没问题了,但是我到这里还是不能正常提交。

我遇到的问题是:在git push后,提示:

1
No supported authentication methods available (server sent: publickey)

想到可能是这个仓库原来是用https下载的,查看.git/gitconfig里的[remote "origin"],果然是https的,所以要先改成

1
url = git@github.com:用户名/仓库.git

然后再次提交,依然报错

1
2
3
Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

而且报错信息来自一个叫做TortoiseGitPlink的程序。在网上查找一番后知道要改小乌龟的ssh.exe,但是检查后发现已经设置成git里的ssh了。感觉问题就出在小乌龟的TortoiseGitPlink上,明明已经改了可执行文件,但是用git提交还是会调用它。

我也不知道怎么改变git的设置。于是只好将Tortoise GitGit都卸载了。卸载之后在原来Git的安装目录里发现还残留了个文件etc/gitcofig,里面有一条设置也是含有TortoiseGitPlink,于是也将这个文件删掉,这样才卸载干净。

重装Git的时候还特别留意了有一个选项就是选TortoiseGitPlink的,我自然就没有选它,还是用了Git自带的。

最后再次push,终于成功了。