linux - 通过 jenkins 构建步骤传递密码

标签 linux ubuntu jenkins ssh scp

我正在尝试在 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 中提供密码,或修改命令以传递我的凭据?

Helpful information: I'm using Putty on Windows 10 to connect to my Ubuntu 16.04.3 LTS x64 servers from another Ubuntu 16.04.3 server.

最佳答案

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

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

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

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

关于linux - 通过 jenkins 构建步骤传递密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46045481/

相关文章:

linux - PCI 枚举 hack 以数据中止异常结束

linux - 系统侧 C 与 C?

build - 有没有办法自动执行 SEO 检查?

jenkins - 如何在 Jenkinsfile 管道中使用 httpRequest 进行基本身份验证

linux - 这个 PROMPT_COMMAND 有什么作用?

linux - Less - 一次搜索多个文件

c++ - 在 ubuntu 10.04 下安装最新的 1.44 boost 库

windows - 使用 Eclipse 进行跨平台 java 开发(构建路径问题)

ubuntu - 如何使目录apache在ubuntu上可读

jenkins - 如何通过API获取可以登录jenkins的用户列表