
現在大多數公司都有 GIT 來管理代碼版本控制了,既然用到 GIT,相信大家都接觸過 Github、Gitlab、Gitee 這些遠端倉庫,或者是公司内部自行搭建的 GIT 倉庫。
當用到 SSH 方式來連接配接 GIT 倉庫的時候,難免會同時用到多個倉庫,一般生成公私鑰的預設配置檔案為:
私鑰:C:\Users\xxx.ssh\id_rsa
公鑰:C:\Users\xxx.ssh\id_rsa.pub
那麼問題來了,我先生成 Github 的,再生成 GitLab 的,那麼後面配置的 Gitlab 的公私鑰檔案會覆寫前面配置 Github 的,進而導緻 Github 倉庫無法連接配接。。
這樣的配置隻能同時連接配接一種類型的倉庫,如何在同一台電腦做到同時連接配接多個不同的倉庫呢?
一、生成多個倉庫公私鑰
1、生成 Github 的:
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/github_id_rsa
2、生成 Gitlab 的:
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/gitlab_id_rsa
後面有多個倉庫都依此類推,用 -f 來指定不同的檔案名稱:xxx_id_rsa,進而區分不同的倉庫類型,而不用擔心被後面預設生成的覆寫。
二、将公鑰添加到倉庫裡面
複制 xxx_id_rsa.pub 公鑰檔案裡面的内容到對應倉庫裡面,以下 Github 示例:
三、添加 config 配置
在 ~/.ssh 目錄下建立 config 檔案,添加以下内容:
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa
# 多個依此類推
# ...
四、測試連通性
分别測試多個倉庫的連通性,驗證配置是否生效。
1、測試Github:
$ ssh -T [email protected]
2、測試Gitlab:
$ ssh -T [email protected]
以下是 Github 連通示例:
$ ssh -T [email protected]
Enter passphrase for key '/c/Users/xxx/.ssh/github_id_rsa':
Hi javastacks! You've successfully authenticated, but GitHub does not provide shell access.
這樣配置完,我們就能愉快的使用各種不同的倉庫了~