文章目錄
Jenkins 該如何使用 SSH 存取 AD(LDAP) 驗證的 Git server
最近公司的專案正積極地從 SVN 搬遷到 GIT,所以連帶的 CI Server - Jenkins 這邊的 SCM (Source Code Management) 也需要一併調整,同事為了不想寫死帳號密碼所以打算透過 SSH 來存取 Git Server,公司為了讓大家使用上更便利,也讓大家不用記那麼多組帳號密碼,Git server 的驗證是整合 AD,而在進行 Jenkins 整合 git server 時發現網路比較少使用 AD 搭配 SSH 的做法,所以紀錄一下,另外公司目前 Git server 是使用 self-host 的 gitlab ,所以接下來的 demo ,Git server 的部份會使用 Gitlab 來呈現。
產生 AD 帳號的 SSH Key
確認 AD 帳號
最直接的方式就是去看
.gitconfig
(通常位於C:\Users\{username}
) 內容, 確認對應 crendential 所設定的 username範例:
[credential "http://gitlab.yowko.com"] helper = wincred username = yowko.tsai
表示對於 git server (”http://gitlab.yowko.com”) AD 使用的 username 就是
yowko.tsai
;而一般公開的 git server 服務這個 username 常常是 e-mail
Generate SSH key
切換目錄至
C:\Users\{username}\.ssh
執行
ssh-keygen -t rsa -C "{上面拿的 AD 帳號}"
ssh-keygen -t rsa -C "yowko.tasi"
過程中會詢問三個問題 –> 直接 enter 即可
最後會產生兩個檔案
id_rsa(private key)
、id_rsa.pub(public key)
檢查 SSH 是否正確
這邊請參考小風的做法 2013-04-23 Windows使用ssh對Github進行操作
將上面的
.ssh
包含產生出來的 key copy 至C:\Program Files (x86)\Git\
下執行
ssh -T {git server}
ssh -T [email protected]
將 Public Key 綁定至 Gitlab 的帳號
- 登入 Git Server
- 開啟 Settins
- 開啟 SSH tab
將上面產生的 id_rsa.pub 內容複製並貼上
Jenkins 設定
加入 SSH 的 credential
Credentials –> System –> Global credentials (unrestricted)
Add Credentials
設定 Credentail
- Kind:SSH Username with private key
- Name:自訂顯示
Private Key:Enter directly
key:將一開始產生的 private key (id_rsa) 內容完整複製貼上
-----BEGIN RSA PRIVATE KEY----- MI---------------------------------------------fJI= -----END RSA PRIVATE KEY-----
Passphase:請保持空白
Id :不會顯示出來,沒有指定時會使用 UUID
Job 設定
原始碼管理 (Source Code Management) –> 指定 Git Server 的 SSH 路徑 –> 使用上面步驟加入的 credential
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-02
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。