一台電腦上同時使用Gitee(碼雲)和Github/Gitlab
起因:
之前的博客是使用hexo+github pages部署,但是畢竟是國外的服務器,博客訪問特別慢,於是想給github pages加個CDN,但是用了雲服務器提供的CDN加速后還是時不時404,,突然聯想到國內碼雲gitee也有gitee pages服務,於是想直接把博客遷移至gitee上,但遇到了一些問題。
一般來說,在 Gitee 上和在 Github 上使用的賬號郵箱應該是不一樣的(回家換了電腦/重裝系統),因此git需要重新配置一遍,僅此記錄所踩過的坑。
如何在一台電腦上同時使用Gitee(碼雲)和Github/Gitlab?
答案:ssh密鑰
(既可以同時連接gitee和github,也可以在推送的時候免去輸入賬號密碼這等重復步驟)
1. 清除之前的git全局配置
之前安裝過git且配置過郵箱和用戶名的執行下面語句刪除之前的git配置:
git config --global --list //查看你之前是否設置
//刪除之前的配置
git config --global --unset user.name "你的名字" //刪除之前的名字配置
git config --global --unset user.email "你的郵箱"//刪除之前的名字配置
如果重新安裝則無視以上操作
2.生成新的SSH keys
先來解釋下SSH是什么
如前所述,許多 Git 服務器(包括但不限於gitee、github、gitlab)都使用 SSH 公鑰進行認證。 為了向 Git 服務器提供 SSH 公鑰,如果某系統用戶尚未擁有密鑰,必須事先為其生成一份。 這個過程在所有操作系統上都是相似的。 首先,你需要確認自己是否已經擁有密鑰。 默認情況下,用戶的 SSH 密鑰存儲在其 ~/.ssh
目錄下。 進入該目錄並列出其中內容,你便可以快速確認自己是否已擁有密鑰:
$ cd ~/.ssh
$ ls
authorized_keys2 id_dsa known_hosts
config id_dsa.pub
# 生成 key,將郵件地址替換為你 Gitee 或者 Github 使用的郵件地址
$ ssh-keygen -t rsa -C "xxx@xxx.com"
密鑰文件夾目錄(C:\Users\username\.ssh),之前沒有創建過的為空
**我們需要尋找一對以 id_dsa
或 id_rsa
命名的文件,其中一個帶有 .pub
擴展名。 .pub
文件是你的公鑰,另一個則是與之對應的私鑰。 **
如果找不到這樣的文件(或者根本沒有 .ssh
目錄),你可以通過運行 ssh-keygen
程序來創建它們。 在 Linux/macOS 系統中,ssh-keygen
隨 SSH 軟件包提供;在 Windows 上,該程序包含於 MSysGit 軟件包中。
生成 SSH 公鑰 ssh-keygen -o
github
ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C "youremail@qq.com"
gitee
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "youremail@163.com"
這一步如果默認回車,會生成名為 id_rsa
的文件,你可以輸入不同的名字來便於識別文件,比如生成 Gitee 的 ssh key 可以設置為 id_rsa_gitee
,設置 Github 的 ssh key 可以設置為 id_rsa_github
,我這里設置為 id_rsa_gitee
。
直接回車3下,就是默認沒有密碼
密鑰生成完畢
Your identification has been saved in id_rsa_gitee.
Your public key has been saved in id_rsa_gitee.pub.
The key fingerprint is:
SHA256:F0K/ojCbFzgMPru11m4g/9uV03oHK+U0rKBLwOOye2c xxx@xxx.com
The key's randomart image is:
+---[RSA 2048]----+
| . |
| . . |
| . . o |
| . + . . o |
| o X . S o. |
| .+.O o.o o* |
| oo=o+. .+=.+ |
| =++E. .oo+ . |
| ++.*=o. .o . |
+----[SHA256]-----+
在 Gitee 和 Github 添加 public key
找到用戶目錄下的 .ssh 文件夾,查看並復制創建好的 id_rsa_gitee.pub
或 id_rsa_github.pub
的內容。
cd ~/.ssh
# 查看 id_rsa_gitee.pub 文件內容
cat id_rsa_gitee.pub
會顯示這樣一串東西,復制它:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZbvgUEj3XAXH4HkW27ibdXgV6VHdrA9/WdSDHtiiC55mjPvxj3OtPxIbpeJmhWyHiJWR6
uUuK+gkb//O51uWCPhHqxKR7+45tZ9jHqXW+hEKPp+odQgc+3hiHAjTkn3JGeIJlQp2UdJCDHBrp+kcgVeg91+y7cU3ufaUQ/hpD
rCgn6uvwjwJgnDhV9DYi+gFUFe7LUwa1o4nfwg43ycuOOuT7c6VO2dj/0pLRUVTPQYu/C3kaaPVedir7mKIu/dM6Ec44bhYTp1Dq
qp8BO42Cfo+n+dempqYTe2wcPvuDjSj884IATc/KvBfc86Yd2Uj7NI7li90Y3i6adoxUIWQh xxx@xxx.com
打開 Gitee 和 Github 的網站找到設置,再找到 SSH Keys,添加復制的 public key 。
生成公鑰的語句中不涉及目標網站,所以一個公鑰完全可以用於多個網站
創建配置文件
在 .ssh 文件夾中創建 config 文件,添加以下內容以區分多個 ssh key:
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitee
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
#gitlab
Host 47.xxx.xxx.22x
HostName 47.xxx.xxx.xx4
User git
IdentityFile ~/.ssh/id_rsa.gitlab
添加完上面的配置后到 github 和 gitlab/ gitee網站添加 ssh
測試連接是否正常
每個托管商的倉庫都有唯一的后綴,比如 Github 的是 git@github.com
至此電腦端配置完畢,將兩個ssh分別添加到github和gitee中,測試:
ssh -T git@github.com
ssh -T git@gitee.com
Welcome to Gitee.com, xxxx yourname! //返回這句說明連接正常
下面就可以流暢地用Git推送代碼到gitee和github上面了~
更詳細的可以看下面給出的的官方文檔
下文摘自git官網
$ ssh-keygen -o
Generating public/private rsa key pair.
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
Created directory '/home/schacon/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/schacon/.ssh/id_rsa.
Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local
首先 ssh-keygen
會確認密鑰的存儲位置(默認是 .ssh/id_rsa
),然后它會要求你輸入兩次密鑰口令。 如果你不想在使用密鑰時輸入口令,將其留空即可。 然而,如果你使用了密碼,那么請確保添加了 -o
選項,它會以比默認格式更能抗暴力破解的格式保存私鑰。 你也可以用 ssh-agent
工具來避免每次都要輸入密碼。
現在,進行了上述操作的用戶需要將各自的公鑰發送給任意一個 Git 服務器管理員 (假設服務器正在使用基於公鑰的 SSH 驗證設置)。 他們所要做的就是復制各自的 .pub
文件內容,並將其通過郵件發送。 公鑰看起來是這樣的:
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== schacon@mylaptop.local