Jenkins CLI连接被拒绝。

8

执行时

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
2个回答

5
如果连接被拒绝,可能是CLI被禁用了,但更有可能是防火墙或网络出现问题。
每次对Jenkins的成功HTTP请求都会响应CLI端口作为HTTP头,因此您可以快速检查它是否已启用:
curl -sI http://jenkins/ | grep CLI

作为备选方案,可以参考维基页面上的说明,检查TCP端口是否已启用。在http://jenkins/configureSecurity/上查找“JNLP从节点的TCP端口”。

然而,由于堆栈跟踪表明CLI客户端正在尝试与特定端口建立连接,这表明CLI已启用,并且Jenkins正在其HTTP响应中广告该端口号。
因此,您可以尝试手动连接到该端口,以检查它是否已打开:
telnet jenkins <cli-port>

如果你在这里看到“连接被拒绝”的提示,那么你知道你的Jenkins和CLI客户端设置似乎没问题,但你有一个网络问题。此时,请检查Jenkins服务器上的防火墙是否允许该CLI端口的传入连接。
为了使防火墙配置更加容易,你可以在上述提到的“配置安全性”页面中将随机端口切换为固定端口。

非常感谢您的精彩解释 :) 问题出在端口上,即使端口设置为随机,仍然需要指定。无论如何,我已经实现了我想要的功能。 - Zloj

1

我在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

那样就解决了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接