管理git生成的多个ssh key

http://www.bootcss.com/p/git-guide/

问题阐述

当有多个git帐号的时候,好比一个github,用于本身进行一些开发活动,再来一个gitlab,通常是公司内部的git。这二者你的邮箱若是不一样的话,就会涉及到一个问题,生成第二个git的key的时候会覆盖第一个的key,致使必然有一个用不了。css

问题解决

咱们能够在~/.ssh目录下新建一个config文件配置一下,就能够解决问题git

具体步骤

  • 生成第一个ssh key(这里我用于github,用的gmail邮箱)
ssh-keygen -t rsa -C "yourmail@gmail.com"

这里不要一路回传,让你选择在哪里选择存放key的时候写个名字,好比 id_rsa_github,以后的两个能够回车。github

完成以后咱们能够看到~/.ssh目录下多了两个文件docker

  • 生成第二个ssh key(这里我用于gitlab,用的是公司邮箱)windows

    ssh-keygen -t rsa -C "yourmail@gmail.com"

    仍是同样不要一路回车,在第一个对话的时候继续写个名字,好比 id_rsa_gitlab,以后的两个能够回车。bash

    完成以后咱们能够看到如2中图所标记,同样出现两个文件。(一个公钥一个私钥)ssh

  • 打开ssh-agent
    这里若是你用的github官方的bash,ssh-agent -s,若是是其余的,好比msysgit,eval $(ssh-agent -s)ide

  • 添加私钥gitlab

    ssh-add ~/.ssh/id_rsa_github ssh-add ~/.ssh/id_rsa_gitlab
  • 建立并修改config文件测试

在windows下新建一个txt文本,而后将名字后缀一块儿改为config便可
在bash下的话直接touch config 便可。
添加一下内容

    # gitlab
    Host git.iboxpay.com
        HostName git.iboxpay.com  //这里填大家公司的git网址便可
     port 22
PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_gitlab User zhangjun # github Host github.com HostName github.com
port 22 PreferredAuthentications publickey IdentityFile
~/.ssh/id_rsa_github User ZJsnowman
  • 在github和gitlab上添加公钥便可,这里再也不多说。

  • 测试

ssh -T git@github.com

分别测试githab和gitlub

PS:若是到这里你没有成功的话,别急,教你解决问题的终极办法--debug

好比测试github,ssh -vT git@github.com

-v 是输出编译信息,而后根据编译信息本身去解决问题吧。就我本身来讲通常是config里的host那块写错了。


补充一下

若是以前有设置全局用户名和邮箱的话,须要unset一下

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

而后在不一样的仓库下设置局部的用户名和邮箱

好比在公司的repository下git config user.name "yourname" git config user.email "youremail" 在本身的github的仓库在执行刚刚的命令一遍便可。

这样就能够在不一样的仓库,已不一样的帐号登陆。

相关文章
相关标签/搜索