zhongxia245/blog

【20170217】 GitLab和GitHub多账户设置SSH

Closed this issue · 5 comments

时间:2017-02-17 11:38:24
作者:zhongxia

一、背景

由于公司使用gitlab进行代码管理,而平时自己使用github来管理自己的代码。
github 和 gitlab 都是使用 git来来进行管理。

每次提交密码的时候,都需要我们输入密码,这样的操作实在是太麻烦了, 因此我们需要设置 ssh ,避免每次输入密码。

但是呢,每个帐号生成的密钥位置喝名称都是相同的,这样后面的密钥就覆盖了前面的密钥。

0. 解决办法

就是生成两个名称不同的密钥,同时配置不同的密钥到不同的Host上面。这样就解决了密钥冲突的问题。

1. 生成密钥

# ssh可以使用默认的名称
ssh-keygen -t rsa -C "注册的gitlab邮箱"

# 查看公钥,添加到gitlab的ssh处
cat ~/.ssh/id_rsa.pub

# 同理生成 github的密钥(密钥名称不一样,比如 id_rsa_github)
# 右上角用户头像-->Setting->SSH and GPG keys --> New SSH key
cat cat ~/.ssh/id_rsa_github.pub

2. 添加配置

cd ~/.ssh/

touch config

# gitlab
Host gitlab
    HostName git.lcgc.work
    IdentityFile ~/.ssh/id_rsa
  
# github
Host github
    HostName github.com
    IdentityFile ~/.ssh/id_github_rsa

# -------------------
# 测试是否可用, gitlab 、 github 就是上面的 Host名称
ssh -T git@gitlab

ssh -T git@github

# 没有报错就是成功了

image

Host 名称可以随便设置, HostName 就是 网站的地址

三、Github代码上传,如何在dashboard 显示出来

github dashboard 只会显示 用户邮箱上传的代码才算数。但是我们分别使用 gitlab 和 github ,如果设置 同样的用户名, 就会有一个不起作用。

1. 解决方案:

# 设置全局 的 name 和 email
git config --global user.name "zhongxia"
git config --global user.email "zhongxia245@sina.com"

# 给特定的参数设置单独的 name 和 email
git config --local user.name "test"
git config --local user.email "test@test.com"

2. 问题

这样有一个比较麻烦的就是,如果新建一个仓库后,如果不想用全局的名称和邮箱,还需要单独在设置一次。麻烦。

二、参考文章

  1. 《gitlab/github 多账户下设置 ssh keys》

gitlab主机地址是http://10.10.10.89:11000这样的要怎么设置

host gitlab-zxf
    hostname http://10.10.10.89
    User xxxx
    IdentityFile ~/.ssh/gitlabzxf_id_rsa
    IdentitiesOnly yes

这样设置不行呀

你这样写, 你本地有没有设置对应的 host 映射? 使用 switchHosts 看一下对应的映射有没有设置. etc/hosts

@tangzzz-fan 要怎么设置?

准备工作: 1 先打开电脑的隐藏文件设置, 取消文件隐藏; 2 前往你的电脑, 然后选择 etc 的复身, 右键设置文件的读取属性.
10.10.10.89 是你公司内网的地址, 进行对应的映射格式比如: 10.10.10.89 git.baidu.com 然后保存就可以了.

@tangzzz-fan 不需要设置host,

# github
Host github
    HostName github.com
    IdentityFile ~/.ssh/id_github_rsa

这个配置说明: 如果域名为 github.com 则使用 ~/.ssh/id_github_rsa 密钥文件