2015-05-28 2 views
4

При выполненииДженкинс CLI соединение отказал

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 

ответ

3

Если соединение отказано, возможно, CLI отключен, но более вероятно, есть вопрос брандмауэра или сети.

Каждый успешный запрос HTTP Дженкинс отвечает порту CLI в качестве заголовка HTTP, так что вы можете быстро проверить это ли включен:

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

Альтернативно, как documented on the wiki, вы можете проверить, включен ли порт TCP , Найдите «TCP-порт для ведомых агентов JNLP» по адресу http://jenkins/configureSecurity/

Однако, поскольку ваш stacktrace указывает, что клиент CLI пытается установить соединение с определенным портом, он предлагает, чтобы CLI был включен, и Дженкинс рекламирует это номер порта в ответах HTTP.

Таким образом, вы могли бы попытаться подключиться к этому порту вручную, чтобы проверить, является ли оно открыто:

telnet jenkins <cli-port> 

Если вы видите «Connection отказался» здесь, то вы знаете, что ваши настройки клиента Дженкинс и CLI, кажется, все в порядке, но у вас проблема с сетью. В этом случае убедитесь, что брандмауэр на сервере Jenkins разрешает входящие соединения на этом порту CLI.

Чтобы упростить настройку брандмауэра, вы можете переключиться с произвольного порта на фиксированный порт на странице «Конфигурация безопасности», упомянутой выше.

+0

Благодарим вас за чудесное объяснение :) Это проблема портов, и проблема в том, что даже если порт настроен на случайное - его все еще нужно было указать. В любом случае - я достиг того, чего хотел. – Zloj

Смежные вопросы