一、什么是憑證
1、憑據簡介
有許多第三方網站和應用程序可以與Jenkins進行交互,例如代碼倉庫GitHub等。
此類應用程序的系統管理員可以在應用程序中配置憑證以專供Jenkins使用。通常通過將訪問控制應用於這些憑證來完成這項工作,以“鎖定Jenkins可用的應用程序功能區域”。一旦Jenkins管理員在Jenkins中添加/配置這些憑證,Jenkins項目就可以使用憑證與這些第三方應用程序進行交互。
Jenkins中保存的憑證可以用於:
- 適用於Jenkins的任何地方(即全局證書)。
- 特定的Jenkins項目。
- 特定的Jenkins用戶。
2、憑據分類
Jenkins可以保存下面幾種憑證:
- Secret text:例如 API Token(例如GitHub的個人access token)。
- Username with password:指的是登錄GitHub的用戶名和密碼,可以作為單獨的組件處理,也可以作為username:password格式的冒號分割字符串來處理。
- Secret file:實際上是文件中的秘密內容。
- SSH Username with private key:即使用私鑰的SSH 用戶名。這是一個SSH 秘鑰對。公鑰配置在GitHub上面,這里添加私鑰。
- Certificate:即證書。一個PKCS#12證書文件和可選的密碼。
- Docker Host Certificate Authentication:即Docker主機證書身份驗證憑證。
這些憑證的分類可以在全局憑據里面看到:
3、憑據安全
為了確保安全,Jenkins中配置的憑據在Jenkins主實例中加密存儲(通過Jenkins實例的ID來加密),並且只能通過它們的憑據ID在Pipeline項目中處理。
這樣就最大限度地減少了向Jenkins用戶暴露實際證書本身的可能性,並且限制了將功能證書從一個Jenkins實例復制到另一個Jenkins實例的能力。
二、添加憑據
我們這里以添加SSH Username with private key為例,講解如何添加一個Jenkins的憑據。
在上面說過,SSH憑據需要一對私鑰,所以我們首先需要生成SSH Key。
使用下面的命令可以生成SSH Key:
$ ssh-keygen -t rsa -C "your_email@youremail.com"
如下圖所示:
所有選項都是默認,一直回車即可生成。生成之后在.ssh文件夾下就會生成文件,如下圖所示:
一共會生成兩個文件:
- id_rsa。這個是私鑰文件。
- id_rsa.pub。這個是公鑰文件,需要配置到GitHub上面。
登錄GitHub,然后在賬戶下面選擇“Settings”:
然后選擇“SSH and GPG keys”:
然后點擊“New SSH key”,把生成的id_rsa.pub文件里面的內容拷貝進來即可:
這樣就添加完成了SSH key。
Jenkins在拉取git項目代碼的時候,如果沒有配置“證書憑證Credentials”或者配置的不對,就會出現如下圖所示的報錯信息:
這時候就需要添加證書憑證Credentials,有兩種方式添加證書憑證。
1、創建的時候添加
點擊Credentials后面的"Add",選擇“Jenkins”,如下圖所示:
然后選擇“SSH Username with private key”,如下圖所示:
選擇Private Key,如下圖所示:
把上面生成的私鑰復制到這里,給Username起一個名稱即可。
最后點擊“添加”按鈕即可完成添加SSH 憑證。
注意:這里在拷貝私鑰的時候,一定要把生成的私鑰文件里面的所有內容都拷貝進來。
在選擇憑證的時候選擇剛才添加的憑證,這時就不會在報錯了:
2、在憑證里面添加
我們也可以在憑據里面添加
同樣還是選擇“SSH Username with private key”,如下圖所示:
然后下面的步驟和剛才的就一樣了,輸入生成的私鑰即可。這樣就配置好了SSH憑據。