添加新代理时出现 Jenkins IllegalArgumentException

问题描述 投票:0回答:2

我想向 Jenkins 添加一个新代理。当我遵循 Jenkins UI 时,它给了我下面的命令

java -jar agent.jar -jnlpUrl http://<jenkins_url>/computer/<slave_name>/slave-agent.jnlp -secret <REDACTED>

当我尝试执行该命令时,其输出如下所示:

Exception in thread "main" java.lang.IllegalArgumentException: IV buffer too short for given offset/length combination
        at javax.crypto.spec.IvParameterSpec.<init>(IvParameterSpec.java:80)
        at hudson.remoting.Launcher.parseJnlpArguments(Launcher.java:515)
        at hudson.remoting.Launcher.run(Launcher.java:325)
        at hudson.remoting.Launcher.main(Launcher.java:283)

您能帮我解决这个错误吗?任何帮助将不胜感激。

jenkins illegalargumentexception jenkins-agent
2个回答
0
投票

我检查了 Jenkins 代码以及 Jenkins 代理代码(远程)中 IV 长度的设置,它似乎在所有地方都一致设置为 16 字节。

然而,通过运行

curl
来获取slave-agent.jnlp URL(
$JENKINS_URL/computer/$node_name/slave-agent.jnlp
),我发现我认为应该使用的http:// URL只返回“302 Found”和“ location”标头设置为相同的 URL,但带有 https://。
curl
之后,我看到了有关 Jenkins 中缺少权限的消息(读取,然后连接代理)。为匿名用户添加这些(在
$JENKINS_URL/configureSecurity
,使用基于矩阵的安全性)为我解决了这个问题。

或者更确切地说,它把它变成了另一个问题,那就是“连接被拒绝”。我又花了一段时间才弄清楚——对于在容器中运行的 Jenkins master——在全局安全配置中,“入站代理的 TCP 端口”必须设置为容器内部端口,而在节点配置中, “隧道连接通过”必须设置为外部端口。

我希望我的调试练习也至少部分适用于您的环境。


0
投票

对我来说,这个确切的错误是因为同时我使用 Jenkins 从 http 迁移到 https 并将启动参数 --httpsRedirectHttp 添加到 Java 服务的启动(我在 Windows 上运行)。这导致了问题,通过修改主节点上的系统属性“Jenkins URL”以包含“https://”而不是之前的“http://”解决了问题。

之后,我在我的节点上下载了新的 agent.jar 并按照说明中的说明运行它,并且它运行完美。希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.