Jenkins CLI:使用匿名权限而不是用户定义的权限

时间:2015-02-18 19:13:51

标签: jenkins command-line-interface ssh-keys

我对这个问题很生气,我不知道如何解决它。

我们正试图从Windows Central存储库中的钩子触发Jenkins构建。这实际上是在旧的Jenkins服务器(LTS 1.580.1)上运行。

我们以前的方式是使用存储在文件中的SSH私钥调用Jenkins CLI。

这是奇怪的事情:

  

C:\ Users \ Username \ jenkins> java -jar jenkins-cli.jar -s http://hostname:8080 -i ci.key list-jobs

hudson.security.AccessDeniedException2: jenkins_ci is missing the Overall/Read permission
         at hudson.security.ACL.checkPermission(ACL.java:58)
         at hudson.model.Node.checkPermission(Node.java:417)
         at hudson.cli.CLICommand.main(CLICommand.java:236)
         at hudson.cli.CliManagerImpl.main(CliManagerImpl.java:92)
         at sun.reflect.GeneratedMethodAccessor345.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
         at java.lang.reflect.Method.invoke(Method.java:483)
         at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:320)
         at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:295)
         at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:254)
         at hudson.remoting.UserRequest.perform(UserRequest.java:121)
         at hudson.remoting.UserRequest.perform(UserRequest.java:49)
         at hudson.remoting.Request$2.run(Request.java:324)
         at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
         at hudson.cli.CliManagerImpl$1.call(CliManagerImpl.java:63)
         at hudson.remoting.CallableDecoratorAdapter.call(CallableDecoratorAdapter.java:18)
         at hudson.remoting.CallableDecoratorList$1.call(CallableDecoratorList.java:21)
         at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
         at java.lang.Thread.run(Thread.java:745)

jenkins_ci用户是一个Active Directory服务帐户,主要用于处理所有内容。在Jenkins安全矩阵中,我拥有与此服务帐户相同的权限。

当我使用我的ssh键并运行完全相同的命令时,它就像一个魅力。

如果我跑谁,我说它" jenkins_ci"但是,如果我更改匿名权限,那么jenkins_ci开始工作。 它似乎没有读取已定义的用户权限,而是使用匿名用户权限。

任何想法如何使它工作?这个是我应该向Jenkins报告的错误还是我错过了什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

好的,经过数小时和数小时的工作,我有了一个很快乐的想法"它起作用了。

我们的Jenkins使用LDAP对Active Directory进行身份验证。

不知何故,Jenkins(及其用户文件夹)创建的用户是: " jenkins_ci" (小写)和我们的Active Directory帐户" JENKINS_CI" (大写)。

似乎Jenkins的安全性区分大小写

我停止了Jenkins,删除了主机上的用户文件夹,刚刚启动了Jenkins。 新文件夹现在称为JENKINS_CI,现在CLI正在运行。

答案 1 :(得分:0)

java -jar jenkins-cli.jar -s http://server get-job myjob> myjob.xml

我可以使用以下链接

运行以上命令

https://wiki.jenkins-ci.org/display/JENKINS/Disable+security