github多账号多SSH操作遇到的权限问题-MacOS
因为开了两个github账号,需要两个SSH进行上传。在分别进行了SSH绑定之后。却一直显示permisson denied。接下来说下具体的坑和解决办法。
问题描述
我的Github账号有两,姑且这么叫
- usera
- userb
Permission to userb/blog.git denied to usera.
根据这一篇的表述,说是不同账号要设置不同的ssh config。具体来讲,是在.ssh/config中写入:
Host github.com-usera
HostName github.com
User usera
PreferredAuthentications publickey
IdentityFile ~/.ssh/usera_rsa
IdentitiesOnly yesHost github.com-userb
HostName github.com
User userb
PreferredAuthentications publickey
IdentityFile ~/.ssh/userb_id_rsa
IdentitiesOnly yes
然后执行
ssh-add ~/.ssh/usera_rsa
ssh-add ~/.ssh/userb_rsa
最后改相应repo下的config
git config user.name "userb"
git config user.email "userb@gmail.com"
这么一大通操作后,我继续Push,又得到了
Permission to userb/blog.git denied to usera.
我:???
我怀疑是不是git config不对。执行了
git config --get [user.name]
和 git config --get [user.email]
。返回的都是userb。我甚至改了全局的config,依然得到了Permission to userb/blog.git denied to usera.
……
我又执行了
git config -l
看看,发现username有两行。前面的一行值为usera,后面一行为userb。然后我查看git config -e
,又确实只有一行是我刚设置的。get user.name也返回userb 。然后我又查,stackoverflow上不少人遇到了这个问题。有人说,这是Xcode Cache的锅,自动存储了密码,去keychain里清除密码就好了。
我按步骤清了密码的,又得到了
Permission to userb/blog.git denied to usera.
很明显不是密码的问题。再说我都多久没用苹果自带的的钥匙串了,我快疯了,就没有一个方法可以让这个repo变成userb吗???
终于,看到有人说,强行添加Remote orgin的账号有用,这么试了一下
git config -e
强行加账号
remote="..."
然后输入密码,然后终于push成功了!
这个时候我又查看了一下git config
git config -l
发现user.name只剩一行了。
为什么SSH没有生效 其实这是个非常低级的错误。因为我使用的远程仓库是http协议(https://github...),不是SSH协议(git@github.com)。当然改SSH是没有用的。
使用http协议,在使用多个账户需要加上这个
git config --global credential.github.com.useHttpPath true
即便是使用ssh协议,在执行上一节的步骤后,也还需要在git config -e里编译remoteURL,与ssh config中的Host值对应。
[remote "origin"]
url=git@github.com-userb:userb/xxx.git
【github多账号多SSH操作遇到的权限问题-MacOS】参考:
- Multiple SSH Keys settings for different github account
- How to store credentials for two different github accounts?
- Git pushing to remote GitHub repository as wrong user
- 论git中使用https和ssh协议的区别
推荐阅读
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 爱就是希望你好好活着
- 昨夜小楼听风
- 知识
- 死结。
- 我从来不做坏事
- 烦恼和幸福
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- Linux下面如何查看tomcat已经使用多少线程
- 说得清,说不清