使用一個(gè)郵箱注冊(cè)多個(gè)git代碼托管平臺(tái),如:GitHub添诉、Gitlab梢褐、碼云等旺遮。在用戶端赵讯,生成對(duì)應(yīng)平臺(tái)的的 SSH Key
時(shí),會(huì)生成對(duì)應(yīng)的 id_rsa
及 id_rsa.pub
公鑰文件(默認(rèn)的密鑰文件名取決于算法耿眉,此處默認(rèn)使用RSA算法加密)边翼,然后在對(duì)應(yīng)的平臺(tái)上添加用戶生成的 SSH Key
即可,下文將在此基礎(chǔ)延伸多個(gè)git托管平臺(tái)使用時(shí)鸣剪,對(duì)應(yīng)的多個(gè)秘鑰生成及添加组底。
單個(gè)平臺(tái)SSH key生成及添加
Windows下需要在 git bash
命令行窗口(也可使用 cmder
),按照下面命令西傀,來生成對(duì)應(yīng)托管平臺(tái)的 SSH Key
斤寇。
ssh-keygen -t rsa -C "對(duì)應(yīng)平臺(tái)注冊(cè)的郵箱地址"
命令行輸出類似如下消息
$ ssh-keygen -t rsa -C "maple_6392@163.com"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in gitee_id_rsa.
Your public key has been saved in gitee_id_rsa.pub.
The key fingerprint is:
SHA256:t86b0RbwMYAVdqGwUQXkuS3ZnL1u4UJBgfjrK7TJkKY maple_6392@163.com
The key's randomart image is:
+---[RSA 2048]----+
| o*O==o |
| o*.=. |
| ..=.o |
| .O.= |
| .S =.B.. |
| + ...+.... |
| o + +o.o... |
| E =o.+..o |
| .*o o. |
+----[SHA256]-----+
此時(shí)在 ~/.ssh
目錄下會(huì)生成 id_rsa
及 id_rsa.pub
文件
.ssh 目錄在對(duì)應(yīng)用戶的根目錄下桶癣,即 :
C:\Users\當(dāng)前用戶名\.ssh
<span id="add_key"></span>
然后將 id_rsa.pub
文件的內(nèi)的 SSH Key
添加到對(duì)應(yīng)的平臺(tái)(此處以GitHub為例)
設(shè)置內(nèi)后拥褂,通過命令進(jìn)行驗(yàn)證
ssh -T git@github.com
注意, 此處git@后添加對(duì)應(yīng)平臺(tái)的主域名牙寞,如Github的github.com饺鹃,碼云的gitee.com。
如果上面命令添加執(zhí)行后间雀,命令行輸出類似內(nèi)容
Hi yourname(此處為對(duì)應(yīng)git平臺(tái)的用戶名)! You've successfully authenticated...
或
Welcome to xxx.com, yourname(此處為對(duì)應(yīng)git平臺(tái)的用戶名)!...
則表示對(duì)應(yīng)平臺(tái)的SSH key生成及部署成功悔详。
否則,
- 檢查對(duì)應(yīng)的key是否粘貼正確
- 檢查操作步驟是否正確
- Try again ~~~
如出現(xiàn)添加了公鑰后仍然無法推送代碼惹挟,則可以參看此處
注意: 要使用SSH鏈接操作遠(yuǎn)程倉庫茄螃,Git的Remote要使用SSH地址,關(guān)于Remote使用見這里
多平臺(tái)SSH key生成部署
類似單平臺(tái)SSH Key的創(chuàng)建,多個(gè)平臺(tái)生成命令做如下調(diào)整:
ssh-keygen -t rsa -C "平臺(tái)注冊(cè)的郵箱地址" -f "生成的rsa文件名"
注意:
-f
后面帶的文件名稱运怖,不含路徑拼弃,則生成在當(dāng)前命令行路徑內(nèi)所在的目錄下。更多工具ssh-keygen
的命令說明及使用見此處
通過此命令摇展,依次生成兩個(gè)平臺(tái)的key
$ ssh-keygen -t rsa -C "maple_6392@163.com" -f "github_id_rsa"
$ ssh-keygen -t rsa -C "maple_6392@163.com" -f "gitee_id_rsa"
# Generating public/private rsa key pair...
# 三次回車即可生成 ssh key
此時(shí) ~/.ssh
目錄下吻氧,生成的文件如下
此時(shí)對(duì)應(yīng)的SSH Key生成成功,具體添加平臺(tái)的步驟參看上文咏连,添加完成進(jìn)行驗(yàn)證時(shí)盯孙,出現(xiàn)如下提示:
$ ssh -T git@gitee.com
The authenticity of host 'gitee.com (218.11.0.86)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitee.com,218.11.0.86' (ECDSA) to the list of known hosts.
Permission denied (publickey).
此時(shí)可以參看 Windows下由于SSH配置文件的不匹配,導(dǎo)致的Permission denied (publickey)及其解決方法
文章內(nèi)說創(chuàng)建config文件祟滴,結(jié)合參考文章 【工具安裝和配置】 GIT同時(shí)連接gitlab和githubstrong text 嘗試后振惰,未解決問題。
此處解決踱启,使用 ssh-agent
工具报账,更多關(guān)于此工具的說明見此處研底。
ssh-agent解決Permission denied (publickey)問題
- 首先確定工具是否可以使用
$ eval `ssh-agent`
## 控制臺(tái)輸出類似下面內(nèi)容,表示該工具可以使用(結(jié)果輸出為工具的進(jìn)程PID)
# Agent pid 7488
注意: Windows系統(tǒng)下需在
git bash
或cmder
命令行界面下操作
- 使用
ssh-add
工具將SSH Key
添加到ssh-agent
# 添加GitHub的SSH Key
$ ssh-add C:/Users/xxx/.ssh/github_id_rsa
# 添加碼云的SSH Key
$ ssh-add C:/Users/xxx/.ssh/gitee_id_rsa
## 此時(shí)可能需要輸入生成SSH Key時(shí)配置的密碼(如果有設(shè)置的話)透罢,成功后輸出類似以下內(nèi)容
# Identity added: C:/Users/xxx/.ssh/github_id_rsa (C:/Users/xxx/.ssh/github_id_rsa)
# Identity added: C:/Users/xxx/.ssh/gitee_id_rsa (C:/Users/xxx/.ssh/gitee_id_rsa)
如出現(xiàn)類似下面提示:
$ ssh-add C:\Users\xxx\.ssh\gitee_id_rsa
Could not open a connection to your authentication agent.
可以使用 ssh-agent bash --login -i
命令來啟動(dòng) ssh-agent
- 最后使用
ssh -T git@xxx.com
命令驗(yàn)證Key是否添加成功
關(guān)于SSH的更多命令可以查看此處
雖然通過上面操作可以使用ssh連接多個(gè)git平臺(tái)榜晦,但使用git工具 TortoiseGit
進(jìn)行提交時(shí),依舊會(huì)出現(xiàn) Please make sure you have the correct access rights and the repository exists.
的提示羽圃,此時(shí)在bash控制臺(tái)通過 git push
命令則正常提交乾胶。。朽寞。 此問題待解決识窿,有知道怎么處理的朋友,希望可以告知脑融。