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

问题阐述

当有多个git账号的时候,比如一个github,用于自己进行一些开发活动,再来一个gitlab,一般是公司内部的git。这两者你的邮箱如果不同的话,就会涉及到一个问题,生成第二个git的key的时候会覆盖第一个的key,导致必然有一个用不了。

问题解决

我们可以在~/.ssh目录下新建一个config文件配置一下,就可以解决问题

具体步骤

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

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

完成之后我们可以看到~/.ssh目录下多了两个文件

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

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

    还是一样不要一路回车,在第一个对话的时候继续写个名字,比如 id_rsa_gitlab,之后的两个可以回车。

    完成之后我们可以看到如2中图所标记,一样出现两个文件。(一个公钥一个私钥)

  • 打开ssh-agent
    这里如果你用的github官方的bash,ssh-agent -s,如果是其他的,比如msysgit,eval $(ssh-agent -s)

  • 添加私钥

     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的仓库在执行刚刚的命令一遍即可。

这样就可以在不同的仓库,已不同的账号登录。

管理git生成的多个ssh key的更多相关文章

  1. git 指定要提交的ssh key

    问题描述 ssh具有-i选项,用于告知在验证时使用哪个私钥文件: -i identity_file Selects a file from which the identity (private ke ...

  2. Git Bash for Windows add ssh key时报Could not open a connection to your authentication agent.

    $ ssh-add id_rsa_bitbucketCould not open a connection to your authentication agent. 运行: $ ssh-agent ...

  3. Git安装及SSH Key管理之Windows篇

    一.安装环境 1.本机系统:Windows 10 Pro(64位)2.Git版本:Git-2.11.0-64-bit.exe(64位) 二.Git安装 去官网下载完后一路下一步完成安装,如下图:   ...

  4. windows 中安装及使用 SSH Key

    转自 简书技术博客:https://www.jianshu.com/p/a3b4f61d4747 联系管理员开通ssh功能: 重新创建环境: 下载工具包到本地机器wsCli 0.4 解压后,把相应的w ...

  5. git之生成SSH key

    git之生成SSH key SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定.利用 SSH 协议可以有效防止远程管理过程中的信 ...

  6. git生成公钥public key并添加SSH key。git乌龟gerrit下推送git【server sent :publickey】

    一.key 码云链接:http://git.mydoc.io/?t=180845#text_180845 博客链接: 方式一:https://blog.csdn.net/xb12369/article ...

  7. GIT:如何管理本机的多个ssh密钥(多个远程仓库账号)

    最近在学习git,首先推荐一个个人认为很不错的git教程,学习后,从git新手变成了git入门了,仍需继续努力. 廖老师的git学习教程(其他git基础知识点,本篇博客就不做介绍了,自己看教程学习吧, ...

  8. CentOS7上GitHub/GitLab多帐号管理SSH Key

    由于公司团队使用 GitLab 来托管代码,同时,个人在 Github 上还有一些代码仓库,可公司邮箱与个人邮箱是不同的,由此产生的 SSH key 也是不同的,这就造成了冲突 ,文章提供此类问题的解 ...

  9. Mac下配置多个SSH KEY访问远程Git服务

    第一步 生成对应的ssh key 1 后面输入你的用户名 或者 邮箱 2 输入一个独立的ssh key名字 区别之前的名字 第二步  编辑 config文件 在.ssh/目录下面 在config文件配 ...

随机推荐

  1. hdu 1716 排列

    题目 这道题是全排列问题,主要注意的是格式问题.觉得下面这种写法最为巧妙 #include <cstdio> #include <iostream> #include < ...

  2. Java 理论与实践: 用弱引用堵住内存泄漏

    弱引用使得表达对象生命周期关系变得容易了 虽然用 Java™ 语言编写的程序在理论上是不会出现“内存泄漏”的,但是有时对象在不再作为程序的逻辑状态的一部分之后仍然不被垃圾收集.本月,负责保障应用程序健 ...

  3. shell中十种实现自加的方法

    shell中十种实现自加的方法 let "n = $n + 1" : $((n = $n + )) ((n = n+)) n=$(($n + )) : $[ n = $n + ] ...

  4. Http TCP/IP协议和socket之间的区别和联系

    总结,TCP/IP是传输层协议,主要解决数据如何在网路中传输,socket是TCP/IP协议的具体实现,是对TCP/IP协议的封装和应用,属于程序员层面,HTTP是应用层协议,应用层协议很多,类似的像 ...

  5. DXP 板层

    一)DXP-设置板层(D+K )在PCB编辑 Design->Layer Stack Manager(层管理) 1)快捷命令 D + K   进入么多层置管理器 2.鼠标右键 TopLayer- ...

  6. [jquery] 遮罩弹窗,点击遮罩弹窗自动隐藏

    $("#id_sign_forbidden_win .c-content").click(function(event){ event.stopPropagation(); // ...

  7. mysql 多个and的简写

    select * from test where name='zj' and sex='2'; 我以前也经常用这种写法,今天爬出去看了一下某位人写的,用了一下也挺好用的 下面这种写法,一一对应关系

  8. EF Core创建实体的Code First标准方法

    针对关系型数据库,实体之间的关系最常见的就是通过外键关联的一对一.一对多和多对多的关系,新的EF Core通过注释和Fluent API 能够做到接近于数据库通过DML创建模型的效果了.实际上,通过D ...

  9. A*与IDA*

    谨以此文向人工智能先驱,\(A\)*算法发明者\(Nils\ Nilsson\)致敬 推一篇深入研究的博客,而本文更多是粗略理解和习题吧. \(A\)*算法是什么?它是启发式搜索的一种,即广度搜索算法 ...

  10. Java正则表达式初学者使用法简介

    在Java中使用正则表达式的方法非常多,最简单的就是和字符串一起使用.对于Java正则表达式初学者,在String中有四个方法可以使用正则表达式,本文正是介绍这四个方法来使用正则表达式来处理文本数据. ...