Дженкинс CLI с HTTPS

Мой сервер Jenkins был переключен на HTTPS. Однако теперь при попытке запустить jenkins-cli.jar я получаю следующую ошибку:

Exception in thread "main" java.io.IOException: Failed to connect to https://ncs-jenkins.cisco.com/
    at hudson.cli.CLI.getCliTcpPort(CLI.java:266)
    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)
Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:902)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1208)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1235)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1219)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:440)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
    at hudson.cli.CLI.getCliTcpPort(CLI.java:264)
    ... 4 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
    at sun.security.ssl.InputRecord.read(InputRecord.java:482)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:883)
    ... 11 more

Есть ли способ использовать Jenkins CLI через HTTPS?

Это происходит, например, когда я пытаюсь запустить даже просто команду справки:

java -jar jenkins-cli.jar -noCertificateCheck -s https://ncs-jenkins.cisco.com:8443/ -i /home/auto/.ssh/id_rsa help

person tomrom95    schedule 13.07.2015    source источник
comment
Вы пробовали этот вариант --› -noCertificateCheck   -  person Bruno Lavit    schedule 14.07.2015
comment
Возможно, вы можете скопировать / вставить свой CLI Jenkins в свой пост, это может помочь решить вашу проблему;)   -  person Bruno Lavit    schedule 14.07.2015
comment
Извини за это. Только что опубликовал пример команды, которую я пытался запустить   -  person tomrom95    schedule 14.07.2015
comment
Спасибо с -noCertificateCheck это работает   -  person Biswajit Das    schedule 29.11.2016


Ответы (3)


Это работает для меня:

java -jar jenkins-cli.jar -noCertificateCheck -auth @jenkins_creds.txt -s https://jenkins.example.com help

(Если я опускаю -auth, то получаю ожидаемую ошибку о необходимости аутентификации в экземпляре Jenkins, но это не похоже на вашу ошибку.)

java-version java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

Версия Дженкинса: 2.138.3

Мне интересно, есть ли у вас какое-то другое оборудование между вашим cli и вашим сервером Jenkins, которое разрывает соединение, если проверка сертификата HTTPS не удалась.

person Marcello Romani    schedule 23.11.2018

Я столкнулся с той же проблемой на одном из моих рабов Дженкинса. Поскольку рабы должны были быть идентичными, я начал исследовать малейшие различия между машинами. Как оказалось, версия java была немного другой:

java-1.7.0-openjdk-1.7.0.75.x86_64 — На рабочей машине

java-1.7.0-openjdk-1.7.0.85.x86_64 — на неисправном.

Я вернулся к более ранней версии openjdk, и проблема была исправлена. Поскольку вы задали вопрос всего несколько дней назад, я подозреваю, что мы столкнулись с той же проблемой.

Чтобы проверить свою версию:

java -showversion -verbose 2>&1 | head -1

Чтобы установить предыдущую версию openjdk (на Centos):

yum install java-1.7.0-openjdk-devel-1:1.7.0.75-2.5.4.0.el6_6.x86_64
person odedfos    schedule 19.07.2015

Если вы используете действительный сертификат SSL. Ознакомьтесь с командами jenkins-cli, возвращающими время ожидания соединения.

PS: Это не решение, но может быть обходным путем, пока решение не будет найдено.

person OK999    schedule 29.07.2015