Reputation: 1842
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
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
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