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