9

Jenkins 在执行构建时继续使用默认的“jenkins”用户。我的构建需要许多 SSH 调用。但是,这些 SSH 调用因主机验证异常而失败,因为我无法连接将此用户的公钥放在目标服务器上。

我不知道默认的“jenkins”用户在哪里配置,因此无法生成所需的公钥以放置在目标服务器上。

任何建议;

  1. 一种强制 Jenkins 使用我定义的用户的方法
  2. 一种为默认 Jenkins 用户启用 SSH 的方法
  3. 获取默认“jenkins”用户的密码

理想情况下,我希望能够同时提供任何帮助,非常感谢。

解决方案:我能够通过来自目标服务器的 SSH 请求访问默认的 Jenkins 用户。一旦我以 jenkins 用户身份登录,我就能够生成公共/私有 RSA 密钥,然后允许在服务器之间进行无密码访问

4

4 回答 4

4

因为当拥有大量从机时,很难预测将在其中的哪台机器上执行构建,而不是显式调用ssh我强烈建议使用现有的 Jenkins 插件进行 SSH 执行远程命令:

于 2016-09-23T16:01:16.447 回答
1

默认的 'jenkins' 用户是运行 jenkins 实例(主或从)的系统用户。根据您的安装,此用户可以由安装脚本(deb/rpm/pkg 等)生成,也可以由管理员手动生成。它可能被称为“詹金斯”,也可能不被称为“詹金斯”。

要了解您的 jenkins 实例在哪个用户下运行,请打开 http://$JENKINS_SERVER/systemInfo,可从您的 Manage Jenkins 菜单获得。

在那里你会找到你的 user.home 和 user.name。例如,在我的 Mac OS X 主机上:

user.home   /Users/Shared/Jenkins/Home/
user.name   jenkins

获得该信息后,您将需要以运行 jenkins 的用户身份登录该 jenkins 服务器,并通过 ssh 进入这些远程服务器以接受 ssh 指纹。

另一种方法(我从未尝试过)是使用自定义 jenkins 作业来接受这些指纹,例如在 SSH 构建任务中运行以下命令:

ssh -o "StrictHostKeyChecking no" your_remote_server

从纯粹的安全角度来看,最后一个提示当然是完全不可接受的:)

于 2013-08-13T19:02:53.870 回答
1

因此,人们可能会做一项“工作”,将主机密钥作为常量写入,例如:

echo "....." > ~/.ssh/known_hosts

验证后,只需从 中填充点即可ssh-keyscan -t rsa {ip}

于 2013-10-02T16:12:54.970 回答
0

没错,管道作业通常会使用用户 jenkins,这意味着需要为此帐户提供 SSH 访问权限才能在管道作业中工作。人们有各种复杂的构建环境,所以这似乎是一个公平的要求。

如其中一个答案所述,每个单独的配置都可能不同,因此请在 Web UI 上的“管理 Jenkins”中的“系统信息”或类似内容下进行检查。主目录和用户名应该分别有一个user.home和一个user.name。在我的 CentOS 安装中,它们是“/var/lib/jenkins/”和“jenkins”。

在我们的例子中,首先要做的是以用户 jenkins 的身份获得 shell 访问权限。因为这是一个自动生成的服务帐户,所以默认情况下不启用 shell。假设您可以以 root 身份登录,或者最好以其他用户身份登录(在这种情况下,您需要预先sudo添加)切换到 jenkins,如下所示:

su -s /bin/bash jenkins

现在您可以验证它真的是 jenkins 并且您输入了正确的主目录:

whoami
echo $HOME

如果这些与您在配置中看到的不匹配,请不要继续。

到目前为止一切都很好,让我们检查一下我们已经拥有的密钥:

ls -lah ~/.ssh

可能只有使用主机名创建的密钥。看看你是否可以使用它们:

ssh-copy-id user@host_ip_address

如果出现错误,您可能需要生成新密钥:

ssh-keygen

如果提示您将新密钥添加到主目录而不覆盖现有密钥,则接受默认值且不输入密码。现在你可以ssh-copy-id再次运行。

用类似的东西测试它是个好主意

ssh user@host_ip_address ls

如果它有效,那么 Jenkins 作业中的 ssh、scp、rsync 等也应该有效。否则,请检查控制台输出以查看错误消息,并在 shell 上尝试这些确切的命令,如上所述。

于 2018-07-25T11:33:24.753 回答