johnfo
johnfo

Reputation: 1842

Use ssh credentials in jenkins pipeline with ssh, scp or sftp

I want to use scp/ssh to upload some files to a server. I discover that I need to use certificate-based authentication, but the question is how? Really what I want to do is to use the same sort of credentials I use with git - passworded ssh cert stored in Jenkins. However, I can't work out how to - the snippet generator has no obvious option for that.

What do others do? Is there an undocumented feature that would do this?

Upvotes: 41

Views: 119190

Answers (2)

tianzhipeng
tianzhipeng

Reputation: 2209

    withCredentials([sshUserPrivateKey(credentialsId: "yourkeyid", keyFileVariable: 'keyfile')]) {
       stage('scp-f/b') {
        sh 'scp -i ${keyfile} do sth here'
       }
   }

Maybe this is what you want. Install Credentials Plugin and
Credentials Binding Plugin. Add some credentials and then you will get "yourkeyid", bind this credentials to keyFileVariable, passphraseVariable etc.

More details and documentation can be found on the Github site of the Jenkins Credentials Binding Plugin, Credentials Binding Plugin docs, Credentials Plugin, SSH Pipeline Steps plugin

Upvotes: 74

Joep Weijers
Joep Weijers

Reputation: 1979

If you install the SSH Agent plugin you can use the ssh-agent pipeline step to run a shell script with an ssh-agent active. The ssh-agent takes a Jenkins credentials ID (a passworded ssh cert, like the one you have for git).

Upvotes: 30

Related Questions