【发布时间】:2017-11-06 17:12:02
【问题描述】:
我想使用 scp/ssh 将一些文件上传到服务器。我发现我需要使用基于证书的身份验证,但问题是如何?我真正想做的是使用与 git 一起使用的相同类型的凭据 - 存储在 Jenkins 中的密码 ssh 证书。但是,我不知道该怎么做 - sn-p 生成器对此没有明显的选择。
其他人是做什么的?是否有未记录的功能可以做到这一点?
【问题讨论】:
标签: jenkins ssh jenkins-pipeline
我想使用 scp/ssh 将一些文件上传到服务器。我发现我需要使用基于证书的身份验证,但问题是如何?我真正想做的是使用与 git 一起使用的相同类型的凭据 - 存储在 Jenkins 中的密码 ssh 证书。但是,我不知道该怎么做 - sn-p 生成器对此没有明显的选择。
其他人是做什么的?是否有未记录的功能可以做到这一点?
【问题讨论】:
标签: jenkins ssh jenkins-pipeline
withCredentials([sshUserPrivateKey(credentialsId: "yourkeyid", keyFileVariable: 'keyfile')]) {
stage('scp-f/b') {
sh "scp -i ${keyfile} do sth here"
}
}
也许这就是你想要的。安装Credentials Plugin 和Credentials Binding Plugin。添加一些凭据,然后您将获得“yourkeyid”,将此凭据绑定到 keyFileVariable、passwordVariable 等。
更多详细信息和文档可以在 Jenkins Credentials Binding Plugin、Credentials Plugin、SSH Pipeline Steps 插件的 Github 站点上找到
【讨论】:
sh 中使用的凭据不应放在双引号之间,而应放在单引号之间,即sh 'scp -i ${keyfile} do sth here'。 jenkins.io/doc/book/pipeline/jenkinsfile/…
如果您安装了SSH Agent plugin,您可以使用ssh-agent 管道步骤来运行一个启用了ssh-agent 的shell 脚本。 ssh-agent 需要一个 Jenkins 凭据 ID(一个带密码的 ssh 证书,就像你为 git 所拥有的一样)。
【讨论】: