执行时
java -jar jenkins-cli.jar -s https://jenkins_url help
我因某种原因拒绝连接。 Jenkins版本是1580.3,用户拥有Jenkins服务器的权限,cli jar是最新的,ssh公钥配置正确。知道可能导致这种情况的原因吗?如果有帮助,这里是堆栈跟踪:
Exception in thread "main" java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at hudson.cli.CLI.connectViaCliPort(CLI.java:203)
at hudson.cli.CLI.<init>(CLI.java:126)
at hudson.cli.CLIConnectionFactory.connect(CLIConnectionFactory.java:72)
at hudson.cli.CLI._main(CLI.java:466)
at hudson.cli.CLI.main(CLI.java:382)
Suppressed: java.io.EOFException: unexpected stream termination
at hudson.remoting.ChannelBuilder.negotiate(ChannelBuilder.java:331)
at hudson.remoting.Channel.<init>(Channel.java:421)
at hudson.remoting.Channel.<init>(Channel.java:400)
at hudson.remoting.Channel.<init>(Channel.java:396)
at hudson.remoting.Channel.<init>(Channel.java:385)
at hudson.remoting.Channel.<init>(Channel.java:377)
at hudson.remoting.Channel.<init>(Channel.java:353)
at hudson.cli.CLI.connectViaHttp(CLI.java:157)
at hudson.cli.CLI.<init>(CLI.java:130)
... 3 more
答案 0 :(得分:3)
如果拒绝连接,可能会禁用CLI,但更可能是防火墙或网络问题。
每个成功的Jenkins HTTP请求都以CLI端口作为HTTP标头响应,因此您可以快速检查它是否已启用:
curl -sI http://jenkins/ | grep CLI
或者,作为documented on the wiki,您可以检查TCP端口是否已启用。在http://jenkins/configureSecurity/
查找“JNLP slave代理的TCP端口”但是,由于您的堆栈跟踪表明CLI客户端正在尝试建立与特定端口的连接,因此它建议启用CLI,并且Jenkins在其HTTP响应中通告该端口号。
因此,您可以尝试手动连接到该端口,以检查它是否已打开:
telnet jenkins <cli-port>
如果您还在此处看到“连接已拒绝”,那么您知道您的Jenkins和CLI客户端设置似乎没问题,但您遇到了网络问题。在这种情况下,请检查Jenkins服务器上的防火墙是否允许该CLI端口上的传入连接。
为了简化防火墙配置,您可以在上面提到的“配置安全性”页面中从随机端口切换到固定端口。
答案 1 :(得分:0)
我在Ubuntu 16.04上遇到了这个问题。
注意:此错误是在我设置并运行成功构建作业之后发生的。在执行特别繁重的构建工作之后,这发生在我身上。因此,假设错误不是防火墙问题,我的修复程序可能会起作用。
首先,我尝试使用jenkins-cli.jar
工具通过命令行安全重启:
java -jar jenkins-cli.jar -s http://localhost:8080 -auth <username>:<password> safe-restart
,但也收到相同的Connection refused
错误消息。
因此,作为最后的选择,我尝试像这样重新启动服务器上的Jenkins服务:
sudo systemctl restart jenkins
然后修复它。