問題說明
現在雲端倉庫很多,有開源中國的 gitee.com 、微軟的 github.com 、還有 gitlab.com 和 bitbucket.org 等等,當我們想同一台電腦連結多個雲端倉庫時,就需要設定不同的使用者、郵箱生成不同的密鑰進行連結。
解決方案
1. 下載下傳安裝Git
我的電腦是Window10 系統,是以下載下傳的Windows版
git官網下載下傳git,連結:https://git-scm.com/
下載下傳完之後,滑鼠右鍵會看到Git Bash
2. 生成公私鑰對
假設我有github.com 、gitlab.com 和 bitbucket.org三個雲端的賬号,各自的注冊郵箱和使用者名不同。
建議:linux 或 mac 使用者推薦在
~/.ssh
路徑下運作指令行,Windows使用者推薦在“
C:\Users\使用者名\.ssh
”目錄下運作指令行
## 說明:
## -t rsa 表示加密方式
## -C 表示注冊不同雲端倉庫時所用的郵箱
## -f 表示自定義生成秘鑰的名稱
#--------------------------------------
# 生成 github.com 公私鑰對
ssh-keygen -t rsa -C "[email protected]" -f github
# 生成 gitlab.com 公私鑰對
ssh-keygen -t rsa -C "[email protected]" -f gitlab
# 生成 bitbucket.org 公私鑰對
ssh-keygen -t rsa -C "[email protected]" -f bitbucket
生成的檔案就在目前運作指令的檔案夾内
3. 登入雲端倉庫配置公鑰
這裡拿github舉例。
登入github後,點選右上角頭像,選擇Settings
彈出頁面,選擇SSH and GPG keys
之後點選 New SSH key 建立SSH連結鑰匙
輸入标題,将生成的github的公鑰(github.pub)檔案内的内容拷貝至 Key,點選Add SSH key
4. 建立config檔案
在剛剛生成公私鑰對的檔案夾内,建立config檔案
内容如下
# one([email protected])
Host github
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
User one
# two([email protected])
Host gitlab
HostName gitlab.java.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab
User two
# three(three.gmail.com)
Host bitbucket
HostName bitbucket.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/bitbucket
User three
# 這是gitee的連結方式
#Host gitee
#HostName gitee.com
#PreferredAuthentications publickey
#IdentityFile ~/.ssh/gitee
#User four
配置詳解
# 這裡是自定義的host簡稱,以後連接配接遠端伺服器就可以用指令ssh myhost
Host
# 主機名可用ip也可以是域名(如:github.com或者bitbucket.org)
HostName
# 伺服器open-ssh端口(預設:22,預設時一般不寫此行)
Port
# 配置登入時用什麼權限認證
# 可設為(publickey, password publickey, keyboard-interactive 等)
PreferredAuthentications
# 證書檔案路徑(如~/.ssh/id_rsa_*)
IdentityFile
# 雲端倉庫登入使用者名
User
5. 遠端測試連結
# 測試連結是否成功, 這裡的github、gitlab是config檔案中設定的Host
ssh -T git@github
ssh -T git@gitlab
運作指令後如果出現“
Hi xxxx! You’ve successfully authenticated, but GitHub does not provide shell access.
”,其中“
xxxx
”為你配置的 User 名字,這時恭喜你,配置成功了~
6. 下載下傳github項目
# 單個雲端倉庫時, 運作 git clone 你的項目位址
git clone [email protected]: 我的使用者名/Radish-Tools.git
# 多個雲端倉庫時, 需要修改你的項目位址的@對象
# 這裡的github是config檔案中的Host
git clone git@github: 我的使用者名/Radish-Tools.git
# 這裡的gitlab是config檔案中的Host
git clone git@gitlab: 我的使用者名/Radish-Tools.git
7. 配置局部使用者名與郵箱
取消全局使用者名與郵箱設定
# 取消全局 使用者名/郵箱 配置
git config --global --unset user.name
git config --global --unset user.email
進入每個項目的檔案夾,運作Git Bash,設定局部使用者名與郵箱
# 單獨為每個repo設定 使用者名/郵箱
git config user.name "one_name" ; git config user.email "[email protected]"
git config user.name "two_name" ; git config user.email "[email protected]"
上述都成功後,會發現GitHub中的SSH鑰匙會由灰變綠