Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-53877

sshagent + git checkout on local agent: ssh key not found


      sshagent + git checkout doesn't seem to work: the `SSH_AUTH_SOCK` env var disappears from the git process environment, and thus the ssh-agent is not available to ssh started by git...



      • create a ssh key credentials `ssh-key`
      • create a pipeline job with Jenkinsfile:
        node {
            stage('Preparation') {
                sshagent (['my-ssh-key']) {
                    sh 'printenv'
                    sh 'ssh-add -l'
                    git 'git@github.com:foo/bar.git'
      • run created job

      Expected result:
      ssh started by git finds the correct ssh key via the ssh agent.

      Actual Result:

      • git fetch fails : no valid ssh key found
      • `ssh-add -l` works though, and shows the key added by `sshagent`

      Other tests:

      • `checkout` scm instead of `git` command: same behavior: it fails to find the key
      • direct `sh 'ssh -vvv git@github.com'` works

      More digging:

      • configure a git wrapper as `git` tool in global jenkins config to observe what happens:
        printenv >& /tmp/$$.git-env
        ssh-add -l >& /tmp/$$.git-ssh-add-list
        export GIT_TRACE=1
        export GIT_SSH_COMMAND="ssh -vvv" 
        git "${@}"
      • run job again


      • `ssh-add -l` fails: "Could not open a connection to your authentication agent."
      • `printenv` shows `SSH_AUTH_SOCK` env var is not here, which explains why the ssh agent is not usable/used

      So the remaining question is: why is the `SSH_AUTH_SOCK` env var removed when executing git commands ?

            Unassigned Unassigned
            thomas_deepomatic Thomas Riccardi
            0 Vote for this issue
            6 Start watching this issue