目录
1.背景
2.尝试过程(未成功)
①删除全局配置
②添加本地私钥
③使用HTTPS URL进行Clone
3.最终解决的方法
①.在 控制面板-凭据管理器 中移除之前的登陆认证
②.通过命名的别名Host重新clone repo
③.其他的repo对应的也需要换成ssh的git clone形式才行
设置了多个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。
通过网上搜索,查找信息,尝试了以下方法:
参考: 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`
然后再运行上面代码。
参考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
最终搜索到了知乎的这个问题:github多账号如何切换?
参考这个回答github多账号如何切换? - Trulon的回答 - 知乎
选择如下所示的凭证,点击删除即可。
前面已经设置好 ~/.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. 说明配置成功!
这样才能使用config中的设置,保证不会出现Permission denied的错误。
代码如下:
git remote set-url origin git@github2:username2/username2.github.io.git