获取401未经授权的错误,而试图启动Jenkins从通过命令行通过JNLP使用-secret选项

6bc51xsx  于 12个月前  发布在  Jenkins
关注(0)|答案(2)|浏览(123)

我尝试通过JNLP命令行启动我的Jenkins slave,这样我就可以将命令放入任务调度器中。然而,只有当我使用Jenkins生成的密钥使用-secret选项时,我才会面临身份验证问题。如果我使用与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"

字符串
注意:我尝试执行的命令是从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


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

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"


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

2izufjch

2izufjch1#

我认为您的问题可能来自安全管理。您是否在全局安全中为JNLP代理启用了TCP端口?
转到Manage Jenkins > Global Security,Enable TCP port for JNLP agents,选择Fixed并填写您在jnlpUrl中使用的端口,然后选择Java Web Start Agent Protocol/4并保存您的配置。
更多文档here

kzipqqlq

kzipqqlq2#

我也遇到过类似的问题。我通过允许匿名访问Jenkins解决了这个问题(该选项在Kerberos properties页面的Kerberos properties部分中可用-我们使用Jenkins的Single Sign-On插件进行Jenkins身份验证,所以不确定其他身份验证插件如何工作)。
我还建议限制匿名访问的范围,如果您启用它。

相关问题