gitlab/github 多账户下设置 ssh keys

一、前言
之前自己的一些项目都托管在github上面,而公司现在用的是gitlab,前几日由于误操作需要重新配置环境,因此将这一个过程记录下来做一总结,这二者都是基于git的开源分布式版本控制系统,在本地可以通过ssh进行远程登录验证和数据传输。详细见ssh协议介绍

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

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

二、生成gitlab密钥

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

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

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

  • 执行命令查看公钥内容:cat ~/.ssh/id_rsa.pub,或者直接用vim编辑期打开id_rsa.pub。

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

三、生成github密钥

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

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

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

四、配置config

  • 在.ssh/目录下新建config文件:touch config,通过vim编辑器进行如下配置:
# gitlab
Host gitlab
        HostName gitlab.(你公司的网址名).com
        IdentityFile ~/.ssh/id_rsa

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

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

五、检测

  • 检测gitlab连接,如果提示是否建立连接,直接yes就行:命令ssh -T git@gitlab

  • 检测github连接:命令ssh -T git@github

如果不报错的话,就说明设置成功了。

六、补充多账号ssh配置
多账号ssh配置:
1.生成指定名字的密钥
ssh-keygen -t rsa -C "邮箱地址" -f ~/.ssh/github_jslite
会生成 github_jslite 和 github_jslite.pub 这两个文件

2.密钥复制到托管平台上
vim ~/.ssh/github_jslite.pub
打开公钥文件 github_jslite.pub ,并把内容复制至代码托管平台上

3.修改config文件
vim ~/.ssh/config #修改config文件,如果没有创建 config

全选复制放进笔记Host jslite.github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_jslite

Host abc.github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_abc

你可能感兴趣的:(Git,Mac开发环境搭建)