gitlab/github 多账户下设置 ssh keys

背景
-
公司之前的版本控制工具一直用的svn,最近开发的新项目,代码准备改换到了gitlab上进行管理。而我自己平时写的一些代码是放在github上进行托管的,这二者都是基于git的开源分布式版本控制系统,在本地可以通过ssh进行远程登录验证和数据传输(关于ssh的详细介绍可以参考这篇博文:http://blog.csdn.net/macrossdzh/article/details/5691924)。

具体操作是利用ssh在本地生成一对公私秘钥(keys),然后将公钥添加到注册的gitlab/github账户配置ssh key的地方即可。默认情况下本地生成的秘钥位于/Users/mac用户名/.ssh/(mac平台,本文针对os x系统介绍)。

But,问题来了:默认情况下每个账户生成的秘钥位置和名称都是相同的,这样后生成的秘钥就会覆盖前面的秘钥导致其失效。解决的办法就是在生成后一个秘钥的时候对其重新命名,以避免冲突,同时将不同的秘钥配置到相对应的Host上面,这样在访问不同的远程仓库时调用不同的key,冲突也就解决了。具体操作如下:

生成gitlab秘钥
-
默认你已经注册了gitlab/github账户,以我自己为例,公司项目用的gitlab,自己代码托管在github。先进行公司账号的设置:

本地生成ssh keys命令:ssh-keygen -t rsa -C "注册的gitlab邮箱",生成的公司秘钥会提示是否需要重命名,公司gitlab的秘钥我们就使用默认名称,直接回车跳过,另外还会提示你设置密码,设置密码的话后续登陆会比较麻烦,也直接跳过。成功后大概是这样的:

图片描述

查看 .ssh/目录,可以看到公私秘钥已经生成,名称分别为id_rsa.pub、id_rsa

图片描述

执行命令查看公钥内容:cat ~/.ssh/id_rsa.pub,或者直接用nano编辑期打开id_rsa.pub。公钥大概是这个样子:

图片描述

将这部分代码添加到到gitlab账户的的SSH Keys中即可。

图片描述

生成github秘钥
-
终端执行命令:ssh-keygen -t rsa -C "注册的github邮箱",这次一定要注意,对生成定的秘钥进行重命名,这里暂且重命名为id_rsa_home,同样不设置密码。可以看到生成的公私秘钥已经分别被重命名为id_rsa_home.pubid_rsa_home

图片描述

可以查看公钥里面的内容:cat ~/.ssh/id_rsa_home.pub

图片描述

不要忘记将其拷到github的SSH Keys里~
gitlab和github的秘钥是分开生成了,可怎么让这两份秘钥分别对应到相应的远程仓库呢?就是让id_rsa.pub认得gitlab,让id_rsa_home.pub认得github。既然不能自动识别,那就只好手动设置了:

配置config
-
在.ssh/目录下新建config文件:touch config,通过nano编辑器进行如下配置:

图片描述

其中Host对应的名称是一个别名,命名可以随意,用来进行远程连接,当然使用真实的主机名称也是可以的。HostNameIdentityFile就是各自主机名称以及对应的秘钥文件了~
这样配置之后,两份秘钥也就对应到各自相应的仓库上了。通过设置别名,也就可以设置任意多的账户了~

最后利用别名检测下配置是否成功~

检测
-
检测github连接,如果提示是否建立连接,直接yes就行:
图片描述

检测gitlab连接:
图片描述

不报错的话,就说明设置成功了!


前端微言
重要的事最好记下来,而不仅仅是说三遍。
248 声望
2 粉丝
0 条评论
推荐阅读
Git初识
就目前而言,普遍应用中的版本控制工具大体可以分成两类:集中式版本控制系统和分布式版本控制系统,前者的代表是SVN,后者的代表就是Git了。记得哥刚出道那会还是遍地SVN,吃Git这只螃蟹的人还是少数,新的事物...

yongboo1阅读 2.3k

git 常用命令 记录
有错误和改进的地方望留言,谢谢 : )顺便推荐一下,git入门教程Git 教程图解 GitPro Git 2(中文版)Git 使用Git 使用规范流程Git 工作流程Commit message 和 Change log 编写指南全局设置git config --system //...

Luff阅读 3.2k

引入钉钉机器人通知 Gitlab CI/CD 的构建状态
本篇是之前写的《利用 Gitlab CI/CD 实现自动构建,自动部署》的续篇。我们知道 Gitlab 的 Pipeline 中的 Job 执行成功或者失败之后,对应 Job 状态会改变为 passedorfailed,当 Job 的状态改变之后, 我们需要再...

陆同学1阅读 4.6k

封面图
写一个Vue DevTools,让开发体验飞一会
近年来,人们越来越关注开发者体验 (DX)。工具和框架也一直在努力改进 DX,比如这两年光速发展的Vite。在大多数人的印象中,Vite的特点是快,但是在我看来让它发展迅速并在前端构建工具占据一席之地的主要原因是...

null仔2阅读 898

封面图
git/pip/easy_install/apt代理/源设置
在公司内网环境中,访问公网往往需要经过公司的代理,对于浏览器、IDE等开发工具,都提供了设置代理的配置,而git、pip、easy_install等CLI工具,则需要通过命令或配置文件进行代理设置;对于Python、Ubuntu、Mav...

乘着风1阅读 5.5k

Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。

ThinkSNS1阅读 2.4k

一个令人惊艳的ChatGPT项目,开源了!
最近在GitHub上发现了一个爆火的开源项目。好家伙,凑近一看,居然还是由微软开源,并且和最近炙手可热的ChatGPT息息相关。项目的名字叫做:Visual ChatGPT。[链接]这个项目最早是3月上旬微软开源的,项目宣布开...

CodeSheep2阅读 1.9k

封面图
248 声望
2 粉丝
宣传栏