Git多账号配置,同一电脑多个ssh-key的管理

为什么有这种需求?

在我们开发过程中,可能会遇到使用同一台机器,既要向公司git服务器提交代码,也要向gitlib或者gitee等
git仓库提交代码,2个仓库设置的用户名信息,不一样,此时需要用到多个ssh-key管理.主要包含以下几个步骤.

生成对应的私钥公钥

1. 生成github.com对应的私钥公钥

ssh-keygen -t rsa -C xxx@126.com -f ~/.ssh/github_rsa

**2. 同样的方式生产git.oschina.net的私钥公钥

ssh-keygen -t rsa -C xxx@163.com -f ~/.ssh/id_rsa_github

把上面得到的文件拷贝到git默认访问的.ssh目录(默认就存在当前登录用户文件夹.ssh目录)

如图所示
Git多账号配置,同一电脑多个ssh-key的管理

把github对应的公钥和oschina对应的公钥上传到服务器
在.ssh目录创建config文本文件并完成相关配置(最核心的地方)

每个账号单独配置一个Host,每个Host要取一个别名,每个Host主要配置HostName和IdentityFile两个属性即可

Host的名字可以取为自己喜欢的名字,不过这个会影响git相关命令,例如:
Host mygithub 这样定义的话,命令如下,即git@后面紧跟的名字改为mygithub
git clone git@mygithub:cary/sample.git

HostName           这个是真实的域名地址
IdentityFile          这里是id_rsa的地址
PreferredAuthentications   配置登录时用什么权限认证--可设为publickey,password publickey,keyboard-interactive等
User            配置使用用户名

** config文件配置如下:**

#gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_oschina
User cary

#github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
User cary

打开Git Bash客户端(管理员身份运行)执行测试命令测试是否配置成功(会自动在.ssh目录生成known_hosts文件把私钥配置进去)

**使用ssh -T 校验

ssh -T git@gitee.com
如果成功会显示如下:
Hi cary! You've successfully authenticated, but GITEE.COM does not provide shell access.