1

我不确定这是否已经被问过/讨论过。

在我的 Jenkins 中,我设置了 LDAP 身份验证,并且在我的一项工作中需要该密码才能使用该密码远程登录到另一台服务器并在那里执行一些任务

假设远程任​​务是通过 sshexec 在需要用户名密码的 ant 任务中执行的。我不希望用户以构建参数的形式再次输入密码,有没有办法在构建作业中获取用于 Jenkins 身份验证的密码?

4

2 回答 2

3

[我]有没有办法在构建作业中获取用于 Jenkins 身份验证的密码?

不是这样的。Jenkins 不会在您登录后保留密码,它只是将密码传递给 LDAP 服务器足够长的时间以验证您是否应该通过身份验证。

因此,您需要定义可在构建期间使用的 Jenkins 中持久化的凭据。您可以使用凭据绑定插件来设置作业可以访问的固定用户名/密码。

如果您的要求是凭证不能用于作业的任何构建,而是手动启动构建的用户必须提供它们(这意味着计划或以其他方式触发的构建是不可能的),我认为这也受支持从 1.1 版开始。为作业定义凭据类型的参数,以通过绑定中的变量扩展来使用。然后让用户在其用户配置页面 ( /me/configure) 中定义这些凭据。然后,当使用参数选择构建时,他们应该看到自己的个人凭据并能够选择它们。用户需要作业的Credentials/UseOwn权限。

未来的另一个选择是用户名/密码凭据的子类型,它根本不存储密码(可能只是一个“盐渍”哈希,使用 jBCrypt),并以某种方式提示您在凭据被认为有效之前输入密码,可能会在几分钟后过期。此模式尚未实施,但对于具有更严格安全要求的站点很有用。

(常规凭证是加密存储的,但默认的安全存储机制会将主加密密钥保存在$JENKINS_HOME里面——只要您不允许任何不是 Jenkins 管理员的人通过 shell 访问您的服务器,当然只要您将主计算机配置为具有零个执行程序,因此人们无法在其上运行构建,只能在从属计算机上运行。另一个 RFE 将是一种替代存储机制,允许通过其他方式注入主密钥。)

于 2014-10-10T15:27:44.547 回答
0

最好的方法是允许远程服务器中的詹金斯用户权限。

于 2014-10-10T15:15:21.673 回答