SSH Agent

SSH Agent Plugin

This plugin allows you to provide SSH credentials to builds via a ssh-agent in Jenkins.

This is convenient in some cases. See alternatives below.

Requirements

You need to have the ssh-agent executable installed on the agent.

Configuring

First you need to add some SSH Credentials to your instance:

Jenkins | Manage Jenkins | Manage Credentials

Note that only Private Key based credentials can be used.

Pipeline

From a Pipeline job, use the sshagent step.

steps {
    sshagent(credentials: ['ssh-credentials-id']) {
      sh '''
          [ -d ~/.ssh ] || mkdir ~/.ssh && chmod 0700 ~/.ssh
          ssh-keyscan -t rsa,dsa example.com >> ~/.ssh/known_hosts
          ssh user@example.com ...
      '''
    }
}

Alternatives not using this plugin

Alternately, you can use the generic withCredentials step to bind an SSH private key to a temporary file and then pass that to commands that require it, for example using the -i option to ssh or scp:

withCredentials([sshUserPrivateKey(credentialsId: 'github', keyFileVariable: 'PK')]) {
    sh 'git -c core.sshCommand="ssh -i $PK" submodule update --init'
}

(Compare gitUsernamePassword binding.)

Or you can even use ssh-agent, but without this plugin, useful especially if you need to customize options in any way:

withCredentials([sshUserPrivateKey(credentialsId: 'github', keyFileVariable: 'PK')]) {
    sh '''
        eval `ssh-agent -s`
        trap "ssh-agent -k" EXIT
        ssh-add "$PK"
        # rest of script…
    '''
}

Freestyle

Then configure your build to use the credentials:

And then your build will have those credentials available, e.g.

Version History

For new versions, see GitHub releases.

For old versions, see the old changelog.