背景:网上关于一台机器配置两个github账号的博文已经很多了,所以本片文章不打算详细罗列配置信息;主要讲讲因粗心遇到的问题,帮助遇到相同问题的朋友快速定位并解决。
具体配置网上找了链接以供参考:
https://blog.csdn.net/formularoom/article/details/72588164
1、SSH通信方式:为避免每次通信需要输入用户名和密码的操作,使用ssh(非对称加密)的形式进行身份确认,首先需要生成公私钥对,私钥留在本机,共钥复制到github上;每次通信时(push pull等) 本机会发送请求到远程主机(github)进行身份确认,远程主机返回一个字符串,本机拿到字符串后 使用指定的私钥进行加密并返回给远程主机,远程主机拿到后使用共钥进行解密 并对比字符串 若一致则建立通信。
2、ERROR: Permission to user1/repo.git denied to user2问题
对于设置两个github账号 先看看~/.ssh/config的配置
# one(git account)
Host by.github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# two(git account)
Host dw.github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa.two
对于问题1已经了解了ssh的通信方式,那么当远程主机返回一个字符串等待加密时 该采用哪一个私钥进行加密回传?我遇到的问题2的原因就是私钥选择错误问题。
1) git remote rm origin 取消origin链接 可以通过git config --list查看
2) 我使用git remote add origin git@github.com:AAAAAAA/HamcestDemo.git 与origin链接 然后再git push origin maser 就产生了问题2。 问题再我需要通过Host为 dw.github.com去拿到正确的私钥处理,因此改成git remote add origin git@dw.github.com:AAAAAAA/HamcestDemo.git 就解决了。
3、git config配置 如果两个账号的话,如果一个经常用的(如公司)可以再全局配置中指定, 个人偶尔用的账号可以进行局部配置
1)全局配置:
git config --global user.name "your name"
git config --global user.email "your email"
git config --global --list 查看全局配置
2)局部配置
git config user.name "your name"
git config user.email "your email"
git config --list 查看配置
指定name email的作用就是便于区分代码的提交人 联系方式等 ~