在带有 ssh、scp 或 sftp 的 jenkins 管道中使用 ssh 凭据
Posted
技术标签:
【中文标题】在带有 ssh、scp 或 sftp 的 jenkins 管道中使用 ssh 凭据【英文标题】:Use ssh credentials in jenkins pipeline with ssh, scp or sftp 【发布时间】:2017-11-06 17:12:02 【问题描述】:我想使用 scp/ssh 将一些文件上传到服务器。我发现我需要使用基于证书的身份验证,但问题是如何?我真正想做的是使用与 git 一起使用的相同类型的凭据 - 存储在 Jenkins 中的密码 ssh 证书。但是,我不知道该怎么做 - sn-p 生成器对此没有明显的选择。
其他人是做什么的?是否有未记录的功能可以做到这一点?
【问题讨论】:
【参考方案1】: 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/…【参考方案2】:
如果您安装了SSH Agent plugin,您可以使用ssh-agent
管道步骤来运行一个启用了ssh-agent 的shell 脚本。 ssh-agent
需要一个 Jenkins 凭据 ID(一个带密码的 ssh 证书,就像你为 git 所拥有的一样)。
【讨论】:
同意这是一个干净的解决方案 - 但是让 ssh-agent 在 Windows 上正常工作是一个痛苦的 IMO。以上是关于在带有 ssh、scp 或 sftp 的 jenkins 管道中使用 ssh 凭据的主要内容,如果未能解决你的问题,请参考以下文章
ssh远程访问控制,scp,sftp,TCP Wrappers策略应用案例