【问题标题】:How to pass password in Jenkins shell script in safe manner?如何以安全的方式在 Jenkins shell 脚本中传递密码?
【发布时间】:2018-12-05 09:28:29
【问题描述】:

我的 jenkins 作业中有以下 shell 脚本,该脚本在成功构建后执行。

sshpass -p 'mypassword' ssh -o StrictHostKeyChecking=no myusername@myhostname "cd /opt/temp/test/ && ./stop-services.sh"

此脚本对于转到目标服务器中的特定目录并运行 .sh 文件很有用。这工作正常。我唯一的问题是每次构建后密码在 jenkins 日志(控制台输出)中可见。

如果有任何其他方法可以避免在日志中显示此密码或任何其他方法将其传递给脚本,任何人都可以帮助我。

感谢和问候, 索米 J.

【问题讨论】:

  • man page for sshpass 说:“-p 选项应该被认为是所有 sshpass 选项中最不安全的……鼓励人们编写旨在以编程方式传递密码的程序使用匿名管道并使用 -d 选项将管道的读取端传递给 sshpass”。 website here 提供了有关如何创建和使用包含密码的加密文件的说明

标签: shell maven jenkins ssh jenkins-pipeline


【解决方案1】:

Jenkins 有一个可供pipelines via 使用的凭据存储

node {
  withCredentials([usernameColonPassword(credentialsId: 'mylogin', variable: 'USERPASS')]) {
    sh ( 'curl -u "$USERPASS" https://private.server/ > output' )
  }
}

这是最安全的方式...

【讨论】:

  • 但我的工作不是管道,而是 Maven 项目。 maven项目还有其他方法吗
  • Jenkins 中有一个插件调用凭证提供程序插件,但我建议去管道那里更灵活还有其他优点...
猜你喜欢
  • 1970-01-01
  • 2018-10-09
  • 2015-11-05
  • 2017-03-14
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多