github是网络公有代码仓库,通常用于私人代码托管,而gitlab通常是企业搭建的内部代码仓库。工做期间,咱们都会同时用到这两个仓库。可公司邮箱与我的邮箱是不一样的,由此产生的 SSH key 也是不一样的,这就形成了冲突 。如何在一台机器上面同时使用 Github 与 Gitlab 的服务?git
公司的GitLab生成一个SSH-Keygithub
# 在~/.ssh/目录会生成gitlab_id-rsa和gitlab_id-rsa.pub私钥和公钥。咱们将gitlab_id-rsa.pub中的内容粘帖到公司GitLab服务器的SSH-key的配置中。
$ ssh-keygen -t rsa -C "注册的gitlab邮箱" -f ~/.ssh/gitlab_id-rsa
公网github生成一个SSH-Key服务器
# 在~/.ssh/目录会生成github_id-rsa和github_id-rsa.pub私钥和公钥。咱们将github_id-rsa.pub中的内容粘帖到github服务器的SSH-key的配置中。
$ ssh-keygen -t rsa -C "注册的github邮箱" -f ~/.ssh/github_id-rsa
~/.ssh
下添加config配置文件,内容以下:
# github key Host github Port 22 User git HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id-rsa Host gitlab Port 22 User git HostName gitlab.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitlab_id-rsa
下面对上述配置文件中使用到的配置字段信息进行简单解释:网络
Host 它涵盖了下面一个段的配置,咱们能够经过他来替代将要链接的服务器地址。 这里能够使用任意字段或通配符。 当ssh的时候若是服务器地址能匹配上这里Host指定的值,则Host下面指定的HostName将被做为最终的服务器地址使用,而且将使用该Host字段下面配置的全部自定义配置来覆盖默认的`/etc/ssh/ssh_config`配置信息。 Port 自定义的端口。默认为22,可不配置 User 自定义的用户名,默认为git,可不配置 HostName 真正链接的服务器地址 PreferredAuthentications 指定优先使用哪一种方式验证,支持密码和秘钥验证方式 IdentityFile 指定本次链接使用的密钥文件
假设gitlab与jgithub的工做目录分别以下所示:ssh
github工做仓库:~/workspace/github
gitlab工做仓库:~/workspace/gitlab
则配置以下:gitlab
#gitlab cd ~/workspace/gitlab git init git config --global user.name 'gitlab' git config --global user.email 'gitlab@company.com' #github cd ~/workspace/github git init git config --local user.name 'personal' git config --local user.email 'personal@163.com'
# 测试github $ ssh -T git@github.com # 测试gitlab $ ssh -T git@gitlab.com