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

  1. 確認 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

  2. Generate SSH key

    • 切換目錄至 C:\Users\{username}\.ssh

      1folder

    • 執行 ssh-keygen -t rsa -C "{上面拿的 AD 帳號}"

      ssh-keygen -t rsa -C "yowko.tasi"

      • 過程中會詢問三個問題 –> 直接 enter 即可

        2genkey

      • 最後會產生兩個檔案 id_rsa(private key)id_rsa.pub(public key)

        3twokey

  3. 檢查 SSH 是否正確

    這邊請參考小風的做法 2013-04-23 Windows使用ssh對Github進行操作

    • 將上面的 .ssh 包含產生出來的 key copy 至 C:\Program Files (x86)\Git\

    • 執行 ssh -T {git server}

      ssh -T git@gitlab.yowko.com

      5testssh

將 Public Key 綁定至 Gitlab 的帳號

  1. 登入 Git Server
  2. 開啟 Settins
  3. 開啟 SSH tab
  4. 將上面產生的 id_rsa.pub 內容複製並貼上

    4gitlab

Jenkins 設定

  1. 加入 SSH 的 credential

    • Credentials –> System –> Global credentials (unrestricted)

      6addcred

    • Add Credentials

      7addcred

    • 設定 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

      8ssh

  2. Job 設定

    • 原始碼管理 (Source Code Management) –> 指定 Git Server 的 SSH 路徑 –> 使用上面步驟加入的 credential

      9jobsetting

參考資訊

  1. git教學(github、gitlab)
  2. 2013-04-23 Windows使用ssh對Github進行操作