【问题标题】:Pass password through jenkins build step通过詹金斯构建步骤传递密码
【发布时间】:2018-02-13 04:32:41
【问题描述】:

我正在尝试在 jenkins 中添加一个构建步骤,以将文件从我的构建服务器复制到我的 Web 应用程序服务器。我在命令提示符下运行了以下命令

sudo scp -r /var/lib/jenkins/workspace/demoproj/publish root@0.0.0.0:/usr/temp

但是当我运行这个命令时,它每次都会提示我输入密码。我发现了 sshpass,但是当我运行这个命令时......

sudo sshpass -p "passwordhere" scp -r /var/lib/jenkins/workspace/demoproj/pub root@0.0.0.0:/usr/temp

终端卡住了。并且永远无法通过。

我的主要问题是如果我将第一个命令添加到 jenkins 的构建步骤中,它将无法传递密码。如何在 jenkins 中提供密码,或修改命令以传递我的凭据?

有用信息:我在 Windows 10 上使用 Putty 连接到我的 来自另一个 Ubuntu 16.04.3 服务器的 Ubuntu 16.04.3 LTS x64 服务器。

【问题讨论】:

  • 能否告诉我们 Jenkins 环境详细信息以及您尝试从哪台机器执行 scp

标签: linux ubuntu jenkins ssh scp


【解决方案1】:

首先,sshpass 需要安装在两个系统上,即运行您的 jenkins 实例的系统以及您尝试访问的系统:root@0.0.0.0。您可以通过执行“which sshpass”或“whereis sshpass”来验证它。如果其中一个都没有安装,那么您需要先安装它。

另外,您是否尝试过从您拥有 jenkins 实例的系统对上述机器执行 ssh:root@0.0.0.0?如果没有,那么任何一个系统的“已知主机”中都可能没有条目。为此,您可以使用 '-o StrictHostKeyChecking=no' 选项执行 ssh 以在已知主机中自动输入。

或者,如果您不想一次又一次地输入密码,您应该使用“密钥”。为两个系统生成一个唯一密钥,并使用 -i 选项执行 scp 或 ssh。

您应该使用 jenkins 凭据而不是直接在脚本中使用敏感密码。将整个 scp 或 ssh 部分放在一个块中,如下所示:withCredentials(){}。

【讨论】:

    【解决方案2】:

    如果您每次都需要在附近输入密码,那么拥有 CI 有什么意义?安装“通过 ssh 发布”插件,它有一个通过 ssh 发送内容的步骤。
    https://wiki.jenkins.io/display/JENKINS/Publish+Over+SSH+Plugin
    查看“在构建期间使用 SSH”部分,您可以使用“通过 SSH 发送文件或执行命令”构建步骤。这将在插件安装后可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 2013-02-14
      • 2016-09-08
      相关资源
      最近更新 更多