尝试使用 -secret 选项通过 JNLP 通过命令行启动 Jenkins slave 时出现 401 Unauthorized 错误

Pat*_*atz 5 jnlp cmd jenkins jenkins-slave

我正在尝试通过 JNLP 通过命令行启动我的 Jenkins slave,以便我可以将命令放入任务调度程序中。但是,只有当我将 -secret 选项与 Jenkins 生成的密钥一起使用时,我才会面临身份验证问题。如果我使用与 Jenkins 相同的用户名密码传递 -auth 选项,则工作正常。

java -jar slave.jar -jnlpUrl http://<jenkins host>:<port>/jenkins/computer/<Slave name>/slave-agent.jnlp -secret <secret_key> -workDir "C:\Jenkins\Robot"
Run Code Online (Sandbox Code Playgroud)

注意:我尝试执行的命令是从 Jenkins 页面复制的。

它给出以下错误:

 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDirINFO: Using C:\Jenkins\Robot\remoting as a remoting work directory Both error and output logs will be printed to C:\Jenkins\Robot\remoting Not use http_proxy property or environment variable which is invalid: unknown protocol: one.proxy.att.com Failing to obtain http://<host:port>/jenkins/computer/<job>/slave-agent.jnlp?encrypt=true
 java.io.IOException: Failed to load http://<host:port>/jenkins/computer/<job>//slave-agent.jnlp?encrypt=true: 401 Unauthorized
         at hudson.remoting.Launcher.parseJnlpArguments(Launcher.java:485)
         at hudson.remoting.Launcher.run(Launcher.java:316)
         at hudson.remoting.Launcher.main(Launcher.java:277)
 Waiting 10 seconds before retry
Run Code Online (Sandbox Code Playgroud)

但是,如果我按如下方式更改命令,它会成功运行。

java -jar slave.jar -jnlpUrl http://<jenkins host>:<port>/jenkins/computer/<Slave name>/slave-agent.jnlp/slave-agent.jnlp -auth <user>:<pass> -workDir "C:\Jenkins\Robot"
Run Code Online (Sandbox Code Playgroud)

我无法将我的凭据保留在启动文件中,因为这将保留在公共共享存储库中。请帮忙。

小智 -3

我有类似的问题。我通过允许匿名访问 Jenkins 解决了这个问题(该选项在Manage Jenkins页面、Kerberos properties部分中可用 - 我们使用 Kerberos 单点登录插件进行 Jenkins 身份验证,因此不确定其他身份验证插件如何工作)。

如果您启用匿名访问,我还建议限制其范围。