多Github账号push时提示[email protected]: Permission denied (publickey)

目录

1.背景

2.尝试过程(未成功)

①删除全局配置

②添加本地私钥

③使用HTTPS URL进行Clone

3.最终解决的方法

①.在 控制面板-凭据管理器 中移除之前的登陆认证

②.通过命名的别名Host重新clone repo

③.其他的repo对应的也需要换成ssh的git clone形式才行


1.背景

设置了多个github账号,配置好了~/.ssh/config 文件,如下:

(多账号配置参考:Git的多账号如何处理?)

# Host为别名,可自己任意定义。
# 然后用ssh -T git@host可测试,如ssh -T git@github2

# Github1
Host github1
HostName github.com
User username1
IdentityFile ~/.ssh/id_rsa

# Github2
Host github2
HostName github.com
User username2
IdentityFile ~/.ssh/id_rsa_github2

尝试push时报错

[email protected]: Permission denied (publickey)

每一次都识别成之前的那个Github账号username1。

2.尝试过程(未成功)

通过网上搜索,查找信息,尝试了以下方法:

①删除全局配置

参考: git多账户配置

git config --global --unset user.name
git config --global --unset user.email

②添加本地私钥

ssh-add ~/.ssh/id_rsa_github2

如果报错“Could not open a connection to your authentication agent.”,说明agent没有启动,先运行:

eval $(ssh-agent)

或者 (注意这里是反引号),

eval `ssh-agent -s`

然后再运行上面代码。

③使用HTTPS URL进行Clone

参考GitHub Error Message - Permission denied (publickey)

详情参考GithubHelp:https://help.github.com/articles/set-up-git/

git clone https://github.com/username1/username1.github.io.git

3.最终解决的方法

最终搜索到了知乎的这个问题:github多账号如何切换?

参考这个回答github多账号如何切换? - Trulon的回答 - 知乎

①.在 控制面板-凭据管理器 中移除之前的登陆认证

选择如下所示的凭证,点击删除即可。

多Github账号push时提示git@github.com: Permission denied (publickey)_第1张图片

②.通过命名的别名Host重新clone repo

前面已经设置好 ~/.ssh/config,如前所述,第二个账号别名(即Host)为github2,此时可运行如下测试:

ssh -T git@github2

就会输出如下内容。

Hi username2! You've successfully authenticated, but GitHub does not provide shell access.

表面前面配置正确。

然后运行

git clone git@github2:username2/username2.github.io.git

把其中的github2、username2、username2.github.io改成你定义的别名、你的用户名、你的repo名 即可!

此时再进入该目录下进行git push就会提示 Already up to date. 说明配置成功!

③.其他的repo对应的也需要换成ssh的git clone形式才行

这样才能使用config中的设置,保证不会出现Permission denied的错误。

④.若有之前通过https clone的,可以更改链接

代码如下:

git remote set-url origin git@github2:username2/username2.github.io.git

 

你可能感兴趣的:(git)