多個git托管平臺同時使用時SSH Key的生成及添加

使用一個郵箱注冊多個git代碼托管平臺,如:GitHub、Gitlab、碼云等。在用戶端,生成對應平臺的的 SSH Key 時,會生成對應的 id_rsaid_rsa.pub 公鑰文件(默認的密鑰文件名取決于算法,此處默認使用RSA算法加密),然后在對應的平臺上添加用戶生成的 SSH Key 即可,下文將在此基礎延伸多個git托管平臺使用時,對應的多個秘鑰生成及添加。

單個平臺SSH key生成及添加

Windows下需要在 git bash 命令行窗口(也可使用 cmder ),按照下面命令,來生成對應托管平臺的 SSH Key


ssh-keygen -t rsa -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]-----+

此時在 ~/.ssh 目錄下會生成 id_rsaid_rsa.pub 文件

.ssh 目錄在對應用戶的根目錄下,即 : C:\Users\當前用戶名\.ssh

<span id="add_key"></span>

然后將 id_rsa.pub 文件的內的 SSH Key 添加到對應的平臺(此處以GitHub為例)

github_setting
github_setting
github_ssh_keys
github_ssh_keys
github_ssh_key_add
github_ssh_key_add

設置內后,通過命令進行驗證


ssh -T git@github.com

注意, 此處git@后添加對應平臺的主域名,如Github的github.com,碼云的gitee.com

如果上面命令添加執(zhí)行后,命令行輸出類似內容


Hi yourname(此處為對應git平臺的用戶名)! You've successfully authenticated... 


Welcome to xxx.com, yourname(此處為對應git平臺的用戶名)!...

則表示對應平臺的SSH key生成及部署成功。

否則,

  • 檢查對應的key是否粘貼正確
  • 檢查操作步驟是否正確
  • Try again ~~~

如出現(xiàn)添加了公鑰后仍然無法推送代碼,則可以參看此處
注意: 要使用SSH鏈接操作遠程倉庫,Git的Remote要使用SSH地址,關于Remote使用見這里


多平臺SSH key生成部署

此處以 Github碼云 為例,做演示說明。

類似單平臺SSH Key的創(chuàng)建,多個平臺生成命令做如下調整:


ssh-keygen -t rsa -C "平臺注冊的郵箱地址" -f "生成的rsa文件名"

注意: -f 后面帶的文件名稱,不含路徑,則生成在當前命令行路徑內所在的目錄下。更多工具 ssh-keygen 的命令說明及使用見此處

通過此命令,依次生成兩個平臺的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

gitee_ssh_key
gitee_ssh_key

此時 ~/.ssh 目錄下,生成的文件如下

ssh_dir
ssh_dir

此時對應的SSH Key生成成功,具體添加平臺的步驟參看上文,添加完成進行驗證時,出現(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).


此時可以參看 Windows下由于SSH配置文件的不匹配,導致的Permission denied (publickey)及其解決方法

文章內說創(chuàng)建config文件,結合參考文章 【工具安裝和配置】 GIT同時連接gitlab和githubstrong text 嘗試后,未解決問題。

此處解決,使用 ssh-agent 工具,更多關于此工具的說明見此處


ssh-agent解決Permission denied (publickey)問題

  • 首先確定工具是否可以使用

$ eval `ssh-agent`

## 控制臺輸出類似下面內容,表示該工具可以使用(結果輸出為工具的進程PID)
#  Agent pid 7488

注意: Windows系統(tǒng)下需在 git bashcmder 命令行界面下操作

  • 使用 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

## 此時可能需要輸入生成SSH Key時配置的密碼(如果有設置的話),成功后輸出類似以下內容
# 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 命令來啟動 ssh-agent

  • 最后使用 ssh -T git@xxx.com 命令驗證Key是否添加成功

關于SSH的更多命令可以查看此處

雖然通過上面操作可以使用ssh連接多個git平臺,但使用git工具 TortoiseGit 進行提交時,依舊會出現(xiàn) Please make sure you have the correct access rights and the repository exists. 的提示,此時在bash控制臺通過 git push 命令則正常提交。。。 此問題待解決,有知道怎么處理的朋友,希望可以告知。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容