我想使用scp/ssh将一些文件上传到服务器。我发现我需要使用基于证书的身份验证,但问题是如何实现? 实际上,我希望使用与git相同类型的凭据-存储在Jenkins中的密码ssh证书。 但是,我无法弄清楚如何做到这一点-片段生成器没有明显的选项。
其他人怎么做? 是否有一个未记录的功能可以实现这一点?
我想使用scp/ssh将一些文件上传到服务器。我发现我需要使用基于证书的身份验证,但问题是如何实现? 实际上,我希望使用与git相同类型的凭据-存储在Jenkins中的密码ssh证书。 但是,我无法弄清楚如何做到这一点-片段生成器没有明显的选项。
其他人怎么做? 是否有一个未记录的功能可以实现这一点?
withCredentials([sshUserPrivateKey(credentialsId: "yourkeyid", keyFileVariable: 'keyfile')]) {
stage('scp-f/b') {
sh 'scp -i ${keyfile} do sth here'
}
}
Credentials Plugin
和Credentials Binding Plugin
插件。添加一些凭据,然后您将获得"yourkeyid",将此凭据绑定到keyFileVariable、passphraseVariable等变量中。ssh-agent
管道步骤以活动状态运行带有ssh-agent的Shell脚本。 ssh-agent
需要Jenkins凭据ID(像您为Git拥有的那样的带密码的ssh证书)。sshagent(credentials: [env.scm_credentials])
这样的方式? - undefinedsshagent(credentials: scm.userRemoteConfigs.credentialsId)
。这个方法有效是因为我的scm
最终是一个GitSCM
类。很可能对大多数用户也是如此。https://www.jenkins.io/doc/pipeline/steps/params/gitscm/ - undefined
sh
中使用的凭证不应该放在双引号中,而是单引号中,例如sh 'scp -i ${keyfile} do sth here'
。https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#interpolation-of-sensitive-environment-variables - SantaXL