# Getting handshake error while trying to use Jenkins CLI

**URL:** <https://community.jenkins.io/t/getting-handshake-error-while-trying-to-use-jenkins-cli/16808>\
**Category:** Using Jenkins\
**Tags:** question\
**Created:** [July 7, 2024, 7:45am UTC](https://community.jenkins.io/t/getting-handshake-error-while-trying-to-use-jenkins-cli/16808 "2024-07-07T07:45:06Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![ihtesham](https://avatars.discourse-cdn.com/v4/letter/i/71e660/32.png) [@ihtesham](https://community.jenkins.io/u/ihtesham)\
**Post date:** [July 7, 2024, 7:45am UTC](https://community.jenkins.io/t/getting-handshake-error-while-trying-to-use-jenkins-cli/16808/1 "2024-07-07T07:45:06Z")

</div>

Jenkins GUI is working fine. I am trying to access Jenkins CLI and I have configured all the parameters, Whenever I try to execute this command:  
**java -jar jenkins-cli.jar help**

I get this error:

```auto
io.jenkins.cli.shaded.org.glassfish.tyrus.client.exception.DeploymentHandshakeException: Handshake error.
        at io.jenkins.cli.shaded.org.glassfish.tyrus.client.exception.Exceptions.deploymentException(Exceptions.java:38)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.client.ClientManager$3$1.run(ClientManager.java:622)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.client.ClientManager$3.run(ClientManager.java:657)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.client.ClientManager$SameThreadExecutorService.execute(ClientManager.java:810)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.client.ClientManager.connectToServer(ClientManager.java:460)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.client.ClientManager.lambda$connectToServer$2(ClientManager.java:313)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.client.ClientManager.tryCatchInterruptedExecutionEx(ClientManager.java:324)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.client.ClientManager.connectToServer(ClientManager.java:313)
        at hudson.cli.CLI.webSocketConnection(CLI.java:360)
        at hudson.cli.CLI._main(CLI.java:313)
        at hudson.cli.CLI.main(CLI.java:101)
Caused by: io.jenkins.cli.shaded.org.glassfish.tyrus.core.HandshakeException: Response code was not 101: 400.
        at io.jenkins.cli.shaded.org.glassfish.tyrus.client.TyrusClientEngine.processResponse(TyrusClientEngine.java:308)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.container.jdk.client.ClientFilter.processRead(ClientFilter.java:167)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.container.jdk.client.Filter.onRead(Filter.java:111)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.container.jdk.client.Filter.onRead(Filter.java:113)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.container.jdk.client.SslFilter.handleRead(SslFilter.java:402)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.container.jdk.client.SslFilter.processRead(SslFilter.java:365)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.container.jdk.client.Filter.onRead(Filter.java:111)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.container.jdk.client.Filter.onRead(Filter.java:113)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.container.jdk.client.TransportFilter$4.completed(TransportFilter.java:295)
        at io.jenkins.cli.shaded.org.glassfish.tyrus.container.jdk.client.TransportFilter$4.completed(TransportFilter.java:279)
        at java.base/sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:129)
        at java.base/sun.nio.ch.Invoker$2.run(Invoker.java:221)
        at java.base/sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:113)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1583)

```

I am using httpd as a reverse proxy. This is my proxy setup:

```auto
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
	
	RewriteEngine on
	RewriteCond %{SERVER_NAME} =jenkins.website.com
	RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

<VirtualHost *:443>
ServerName jenkins.website.com

SSLEngine on
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /jenkins/ http://localhost:8080/jenkins/ nocanon
AllowEncodedSlashes NoDecode

<Proxy *>
        Order deny,allow
        Allow from all
</Proxy>

ProxyPass / http://localhost:8080/ nocanon
ProxyPassReverse / http://localhost:8080/
ProxyPassReverse / http://jenkins.website.com/
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Host "jenkins.website.com"

SSLCertificateFile /etc/letsencrypt/live/jenkins.website.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/jenkins.website.com/privkey.pem
</VirtualHost>

```

> **Jenkins setup:**
>
> ```
> Jenkins: 2.452.2
> OS: Linux - 5.15.0-207.156.6.el9uek.x86_64
> Java: 21.0.3 - Red Hat, Inc. (OpenJDK 64-Bit Server VM)
> ---
> ant:497.v94e7d9fffa_b_9
> antisamy-markup-formatter:162.v0e6ec0fcfcf6
> apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
> asm-api:9.7-33.v4d23ef79fcc8
> bootstrap5-api:5.3.3-1
> bouncycastle-api:2.30.1.78.1-248.ve27176eb_46cb_
> branch-api:2.1169.va_f810c56e895
> build-timeout:1.33
> caffeine-api:3.1.8-133.v17b_1ff2e0599
> checks-api:2.2.0
> cloudbees-folder:6.928.v7c780211d66e
> command-launcher:107.v773860566e2e
> commons-compress-api:1.26.1-2
> commons-lang3-api:3.14.0-76.vda_5591261cfe
> commons-text-api:1.12.0-119.v73ef73f2345d
> config-file-provider:973.vb_a_80ecb_9a_4d0
> credentials:1361.v56f5ca_35d21c
> credentials-binding:681.vf91669a_32e45
> display-url-api:2.204.vf6fddd8a_8b_e9
> durable-task:555.v6802fe0f0b_82
> echarts-api:5.5.0-1
> eddsa-api:0.3.0-4.v84c6f0f4969e
> email-ext:1814.v404722f34263
> font-awesome-api:6.5.2-1
> git:5.2.2
> git-client:5.0.0
> github:1.39.0
> github-api:1.318-461.v7a_c09c9fa_d63
> github-branch-source:1789.v5b_0c0cea_18c3
> gradle:2.12
> gson-api:2.11.0-41.v019fcf6125dc
> instance-identity:185.v303dc7c645f9
> ionicons-api:74.v93d5eb_813d5f
> jackson2-api:2.17.0-379.v02de8ec9f64c
> jakarta-activation-api:2.1.3-1
> jakarta-mail-api:2.1.3-1
> javax-activation-api:1.2.0-7
> javax-mail-api:1.6.2-10
> jaxb:2.3.9-1
> jdk-tool:73.vddf737284550
> jjwt-api:0.11.5-112.ve82dfb_224b_a_d
> joda-time-api:2.12.7-29.v5a_b_e3a_82269a_
> jquery3-api:3.7.1-2
> jsch:0.2.16-86.v42e010d9484b_
> json-api:20240303-41.v94e11e6de726
> json-path-api:2.9.0-58.v62e3e85b_a_655
> junit:1265.v65b_14fa_f12f0
> ldap:725.v3cb_b_711b_1a_ef
> mailer:472.vf7c289a_4b_420
> matrix-auth:3.2.2
> matrix-project:832.va_66e270d2946
> mina-sshd-api-common:2.13.1-117.v2f1a_b_66ff91d
> mina-sshd-api-core:2.13.1-117.v2f1a_b_66ff91d
> nodejs:1.6.1
> okhttp-api:4.11.0-172.vda_da_1feeb_c6e
> pam-auth:1.11
> pipeline-build-step:540.vb_e8849e1a_b_d8
> pipeline-github-lib:61.v629f2cc41d83
> pipeline-graph-analysis:216.vfd8b_ece330ca_
> pipeline-groovy-lib:727.ve832a_9244dfa_
> pipeline-input-step:495.ve9c153f6067b_
> pipeline-milestone-step:119.vdfdc43fc3b_9a_
> pipeline-model-api:2.2203.v89fa_170c2b_f5
> pipeline-model-definition:2.2203.v89fa_170c2b_f5
> pipeline-model-extensions:2.2203.v89fa_170c2b_f5
> pipeline-rest-api:2.34
> pipeline-stage-step:312.v8cd10304c27a_
> pipeline-stage-tags-metadata:2.2203.v89fa_170c2b_f5
> pipeline-stage-view:2.34
> pipeline-utility-steps:2.17.0
> plain-credentials:183.va_de8f1dd5a_2b_
> plugin-util-api:4.1.0
> publish-over:0.22
> publish-over-ssh:1.25
> resource-disposer:0.23
> scm-api:690.vfc8b_54395023
> script-security:1341.va_2819b_414686
> snakeyaml-api:2.2-111.vc6598e30cc65
> ssh-credentials:337.v395d2403ccd4
> ssh-slaves:2.973.v0fa_8c0dea_f9f
> sshd:3.330.vc866a_8389b_58
> structs:338.v848422169819
> timestamper:1.27
> token-macro:400.v35420b_922dcb_
> trilead-api:2.147.vb_73cc728a_32e
> variant:60.v7290fc0eb_b_cd
> veracode-scan:24.2.23.0
> workflow-aggregator:600.vb_57cdd26fdd7
> workflow-api:1316.v33eb_726c50b_a_
> workflow-basic-steps:1058.vcb_fc1e3a_21a_9
> workflow-cps:3903.v48a_8836749e9
> workflow-durable-task-step:1360.v82d13453da_a_f
> workflow-job:1400.v7fd111b_ec82f
> workflow-multibranch:783.787.v50539468395f
> workflow-scm-step:427.v4ca_6512e7df1
> workflow-step-api:657.v03b_e8115821b_
> workflow-support:907.v6713a_ed8a_573
> ws-cleanup:0.46
> ```

---

<div class="post-metadata">

**Author:** ![MarkEWaite](https://dub1.discourse-cdn.com/flex013/user_avatar/community.jenkins.io/markewaite/32/20_2.png) [@MarkEWaite](https://community.jenkins.io/u/MarkEWaite)\
**Post date:** [July 7, 2024, 3:38pm UTC](https://community.jenkins.io/t/getting-handshake-error-while-trying-to-use-jenkins-cli/16808/2 "2024-07-07T15:38:40Z")

</div>

That message can indicate an error or a gap in the reverse proxy configuration. Please review and compare your configuration with the Apache reverse proxy configuration instructions in the Jenkins documentation:

> **[Reverse proxy - Apache](https://www.jenkins.io/doc/book/system-administration/reverse-proxy-configuration-with-jenkins/reverse-proxy-configuration-apache/)**
>
> Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software

There is also a video available that describes Apache reverse proxy configuration

[![](https://europe1.discourse-cdn.com/flex013/uploads/jenkins/original/2X/1/190e94eeb3ab032de136a34ca9291821e062c210.jpeg "How To Configure Apache HTTP Server as a Reverse Proxy for Jenkins") ](https://www.youtube.com/watch?v=E3_g5wYZlfk)
