同時使用Gitee(碼雲)和Github/Gitlab


一台電腦上同時使用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_dsaid_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.pubid_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 。

生成公鑰的語句中不涉及目標網站,所以一個公鑰完全可以用於多個網站

hWChDg.png
hWC4bQ.png

創建配置文件

在 .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官方文檔

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM