【问题标题】:Jenkins CLI connection refusedJenkins CLI 连接被拒绝
【发布时间】:2015-08-10 16:43:15
【问题描述】:

执行时

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

【问题讨论】:

    标签: java ssh jenkins jenkins-cli


    【解决方案1】:

    如果连接被拒绝,可能是 CLI 被禁用,但更有可能是防火墙或网络问题。

    对 Jenkins 的每个成功的 HTTP 请求都会以 CLI 端口作为 HTTP 标头进行响应,因此您可以快速检查它是否已启用:

    curl -sI http://jenkins/ | grep CLI
    

    或者documented on the wiki,可以检查TCP端口是否开启。在http://jenkins/configureSecurity/ 处查找“JNLP 从代理的 TCP 端口”

    但是,由于您的堆栈跟踪表明 CLI 客户端正在尝试建立与特定端口的连接,这表明 CLI 已启用,并且 Jenkins 在其 HTTP 响应中通告了该端口号。

    因此您可以尝试手动连接到该端口,以检查它是否打开:

    telnet jenkins <cli-port>
    

    如果您在此处还看到“连接被拒绝”,那么您知道您的 Jenkins 和 CLI 客户端设置似乎没问题,但是您遇到了网络问题。在这种情况下,请检查 Jenkins 服务器上的防火墙是否允许该 CLI 端口上的传入连接。

    为了使防火墙配置更容易,您可以在上面提到的“配置安全”页面中从随机端口切换到固定端口。

    【讨论】:

    • 感谢您的精彩解释 :) 这是端口问题,问题是即使端口设置为随机 - 它仍然必须指定。无论如何 - 我实现了我想要的。
    【解决方案2】:

    我在 Ubuntu 16.04 上遇到了这个问题。

    注意:这个错误发生在我之前设置并成功运行构建作业之后。这发生在我运行了一个特别繁重的构建工作之后。因此,假设错误不是防火墙问题,我的修复可能会起作用。

    首先,我尝试使用jenkins-cli.jar 工具通过命令行安全重启:

    java -jar jenkins-cli.jar -s http://localhost:8080 -auth &lt;username&gt;:&lt;password&gt; safe-restart

    但也得到了相同的Connection refused 错误消息。

    作为最后的手段,我尝试像这样在服务器上重新启动 Jenkins 服务:

    sudo systemctl restart jenkins

    然后就解决了。

    【讨论】:

      猜你喜欢
      • 2017-08-08
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2013-04-06
      • 2018-10-29
      • 2018-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多