【问题标题】:Jenkins ssh remote hosts and keyfile path differences on slavesJenkins ssh 远程主机和从机上的密钥文件路径差异
【发布时间】:2015-10-04 01:42:37
【问题描述】:

我们有一个 Jenkins 服务器,它使用 SSH plugin 在全局 Jenkins 配置中配置 SSH 远程主机。这些 ssh 连接使用公钥/私钥对远程主机进行身份验证。

然后我们在构建步骤“使用 ssh 在远程主机上执行 shell 脚本”(我相信这也是 SSH 插件的一部分)中在许多作业中使用这些配置的 SSH 远程主机。

我遇到的问题是,任何使用 ssh 在远程主机上执行 shell 脚本的作业都必须在 Windows 从属设备上运行,因为我还没有找到一种方法来放入密钥文件的某种相对路径.

在 Windows 上,该文件将位于:C:\Users\<username>\.ssh\ 在 linux 上,该文件位于:/home/<username>/.ssh/

我已经尝试了多次使用系统环境变量、在节点配置页面上设置环境变量以及将它们用作密钥文件路径的一部分,但没有任何运气。

我错过了什么吗?有没有更好的处理方法。必须有一种方法来管理跨从属的 ssh 远程主机之间的密钥文件位置和差异。

【问题讨论】:

    标签: linux windows ssh jenkins slave


    【解决方案1】:

    不幸的是,我认为没有办法指定相对路径——配置的密钥文件路径在每个构建从站上都必须相同。远非理想,我知道。

    我不确定 Windows 会如何处理它,但如果您将文件分别放在 Windows 和 Linux 机器上的 c:\ssh\whatever.key/ssh/whatever.key 处,也许像 /ssh/whatever.key 这样的东西会起作用。

    无论如何,该插件已被修改为使用 Jenkins Credentials 插件,它允许您从 Jenkins UI 管理用户名/密码或基于私钥的凭据,而无需将文件放在磁盘上。

    不过,虽然这已被集成到 SSH 插件中,但目前还没有包含此功能的新版本,但看起来它应该“很快”就会推出。

    因此,如果解决方法不起作用,您可以尝试:

    • 等待新版本
    • jenkinsci-users list 上发帖询问新版本
    • 下载并安装一个recent build的插件
      • (尽管在尝试之前我会小心备份现有的作业配置;或者在单独的 Jenkins 实例上尝试)

    【讨论】:

      猜你喜欢
      • 2018-12-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 2018-12-04
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多