惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
腾讯CDC
WordPress大学
WordPress大学
爱范儿
爱范儿
GbyAI
GbyAI
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
Google DeepMind News
Google DeepMind News
Recent Announcements
Recent Announcements
Latest news
Latest news
Last Week in AI
Last Week in AI
V2EX - 技术
V2EX - 技术
I
InfoQ
N
News | PayPal Newsroom
SecWiki News
SecWiki News
Microsoft Azure Blog
Microsoft Azure Blog
美团技术团队
T
Troy Hunt's Blog
H
Hacker News: Front Page
S
SegmentFault 最新的问题
TaoSecurity Blog
TaoSecurity Blog
V
Visual Studio Blog
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园_首页
S
Security @ Cisco Blogs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
小众软件
小众软件
L
LangChain Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tor Project blog
L
LINUX DO - 热门话题
月光博客
月光博客
S
Schneier on Security
Y
Y Combinator Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Proofpoint News Feed
Forbes - Security
Forbes - Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hugging Face - Blog
Hugging Face - Blog
A
Arctic Wolf
Webroot Blog
Webroot Blog
博客园 - 叶小钗
F
Fortinet All Blogs
S
Securelist
AI
AI
B
Blog RSS Feed
Security Latest
Security Latest

博客园 - 伽马科技.攻城师

Docker基础教程(命令详解) Docker基础教程(常用命令篇) Docker基础教程(安装篇) 常用的Jquery插件 自定义webkit浏览器滚动条样式 centos tar压缩与解压缩命令大全 Nginx编译安装(Centos) Nginx的启动脚本(Centos) ffmpeg 音频转换(amr2mp3) 安装php openssl扩展 centos手动编译安装apache、php、mysql 添加自编译的apache为linux系统服务 Jquery datatables 使用方法 HTML5 图片缩放功能 七牛图片上传JSSDK 2015年12月中国航空公司名录 HTML5 开发框架 利用HTML5定位功能,实现在百度地图上定位 openerp7 时区问题
管理git生成的多个ssh key
伽马科技.攻城师 · 2017-01-19 · via 博客园 - 伽马科技.攻城师

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上添加公钥即可,这里不再多说。

  • 测试

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

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