前言
Gitee 提供了基于 SSH 協議的 Git 服務,jenkins可使用ssh方式連接gitee,拉取代碼、提交tag等;使用ssh 連接,相比用戶名+密碼方式,可省去因密碼變更而引起的jenkins關聯修改。
gitee生成、添加 SSH 公鑰
生成SSH公鑰
Gitee 提供了基于 SSH 協議的 Git 服務,在使用 SSH 協議訪問倉庫之前,需要先配置好倉庫的 SSH 公鑰。
按照生成、添加 SSH 公鑰生成公鑰和私鑰,
ssh-keygen -t ed25519 -C "Gitee SSH Key"
- -t key 類型,密鑰算法除了ed25519 ,還有RSA、ECDSA、ED25519-SK/ECDSA-SK, 推薦優先級:
- ED25519 - 現代首選(性能好,安全性高)
- RSA 4096位 - 廣泛兼容(傳統選擇)
- ECDSA - 中等選擇(兼容性較好)
- ED25519-SK/ECDSA-SK - 安全性要求極高的場景
- DSA - 避免使用(已不安全)
- -C 注釋
輸出,如
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/git/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/git/.ssh/id_ed25519
Your public key has been saved in /home/git/.ssh/id_ed25519.pub
# 遠程服務器返回的指紋信息
The key fingerprint is:
SHA256:ohDd0OK5WG2dx4gST/j35HjvlJlGHvihyY+Msl6IC8I Gitee SSH Key
The key's randomart image is:
+--[ED25519 256]--+
| .o |
| .+oo |
| ...O.o + |
| .= * = +. |
| .o +..S*. + |
|. ...o o..+* * |
|.E. o . ..+.O |
| . . ... o =. |
| ..oo. o.o |
+----[SHA256]-----+
生成id_ed25519 、id_ed25519.pub文件
- 私鑰文件 id_ed25519
- 公鑰文件 id_ed25519.pub
添加 SSH 公鑰
復制生成后的 ssh key,通過倉庫主頁 「管理」->「部署公鑰管理」->「添加部署公鑰」 ,將生成的公鑰添加到倉庫中。
驗證
$ ssh -T git@gitee.com
Hi Anonymous! You've successfully authenticated, but GITEE.COM does not provide shell access.
jenkins 配置私鑰
-
在 Jenkins 的 Dashboard 上,點擊“管理 Jenkins” -> “管理憑證”。
-
點擊“系統”區域中的“全局憑證”。
-
點擊“添加憑證”。
-
選擇“私鑰”類型。
-
輸入一個 ID 和描述。
-
在“私鑰”區域,粘貼你的私鑰內容(從id_ed25519文件中復制)。
-
點擊“確定”保存憑證。
指紋
gitee中添加完公鑰,會生成一個指紋信息;指紋是用來驗證遠程主機是可信的,防止中間人攻擊,Gitee SSH 密鑰指紋
在第一次連接遠程服務器時,Git/SSH 客戶端會收到一個由 Gitee.com
服務器返回的指紋。你需要將此指紋與從可信渠道獲取到的指紋進行比對,確認 Gitee.com 服務器的公鑰是否正確。
Gitee中查看指紋
查看本地指紋信息
ssh-keygen -lf ~/.ssh/known_hosts | grep gitee.com
256 SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc gitee.com (ECDSA)
- -l:顯示公鑰的指紋信息
- -f:指定要處理的公鑰文件路徑
- -E sha256:使用SHA256算法計算指紋
總結
將公鑰配置在gitee,將私鑰配置在jenkins,jenkins連接gitee時,會用私鑰生成簽名,gitee收到請求,使用公鑰驗簽;這也符合RSA的簽名算法流程;