I don't think that will help. The CLI changed in a recent release, and even without the reverse proxy you have to change how you use it. Did you have a look at the "Common Problems with the CLI client" in the docs? Remember that the username you are passing with -user is a Jenkins user id, not a Linux username. Have you added the public key for that user to Jenkins as shown in the doc?

One other thing: You are using "java -cp /path/to/cli.jar", while all the examples in the help show "java -jar /path/to/cli.jar". Might be worth trying. In any case, I ended up switching to the direct ssh method I showed in my shell script, and it's been working for me.

Good luck!
Eric

On 6/27/2019 10:17 AM, Eric Fetzer wrote:
Hi Eric, thanks for the reply.  I'm not using a reverse proxy on my Jenkins server.  It's pretty much out of the box.  I've been using the jenkins-cli.jar file for about 6 years.  I just recently upgraded it and it stopped working. Before, I was able to connect with just the -s and the -i.  Not sure why with the new version -i needs the ssh option.  Maybe I should just call straight to the jenkins-cli.jar on the server to bypass jenkins remote security functionality?

Thanks,
Eric


On Tue, Jun 25, 2019 at 11:10 AM Eric Pyle <eric.p...@cd-adapco.com <mailto:eric.p...@cd-adapco.com>> wrote:

    Have a look at the docs: https://jenkins.io/doc/book/managing/cli/
    .  As stated there, if you are using a reverse proxy on your
    Jenkins server, it won't work using the jenkins-cli.jar as you
    are. You can try using the property
    -Dorg.jenkinsci.main.modules.sshd.SSHD.hostName on Jenkins
    startup, but that didn't work for our installation. I ended up
    switching to accessing CLI via the ssh command, as documented
    under "Using the CLI over SSH". Here's a little shell script I set
    up to access CLI from a bash prompt:

    $ *cat bin/jenkins*
    if [ $# == 0 ]; then DEF_ARG=help;fi
    port=`curl -Lv ${JENKINS_URL}/login 2>&1 | grep -i
    'x-ssh-endpoint'|grep -oE '([0-9]+)'`
    ssh -p $port starci $@ $DEF_ARG


    On 6/25/2019 11:52 AM, Eric Fetzer wrote:
    Thanks Eric!  I updated my java version to 1.8 and it appears my
    command line has changed since the version of java-cli.jar I was
    using.  the -i doesn't work together with the -s without a -ssh
    and the -ssh needs a -user, lol.  But once I put all those
    together, I get:

    java -cp /my/path/to/jar/jenkins-cli.jar -s
    http://myJenkinsServer:8080 <http://myjenkinsserver:8080/>  -ssh
    -user jenkins -i /my/key/.ssh/id_rsa help

        Jun 25, 2019 9:48:19 AM
        org.apache.sshd.common.util.security.AbstractSecurityProviderRegistrar
        getOrCreateProvider
        INFO: getOrCreateProvider(EdDSA) created instance of
        net.i2p.crypto.eddsa.EdDSASecurityProvider
        Jun 25, 2019 9:48:19 AM hudson.cli.SSHCLI sshConnection
        WARNING: No header 'X-SSH-Endpoint' returned by Jenkins


    I don't think this is a success as it didn't return help to me.


    On Tuesday, June 25, 2019 at 9:33:37 AM UTC-6, Eric Pyle wrote:

        It's telling you the Java version is not correct. What
        version of Java are you using? Needs to be 1.8 for current
        Jenkins.

        On 6/25/2019 11:27 AM, Eric Fetzer wrote:
        OK, that was a flop.  I downloaded the correct
        jenkins-cli.jar from : http://myJenkinsServer:8080
        <http://myjenkinsserver:8080/>/jnlpJars/jenkins-cli.jar
        <https://jenkins.example.com/jnlpJars/jenkins-cli.jar>, and
        now I get:

        Exception in thread "main"
        java.lang.UnsupportedClassVersionError: hudson/cli/CLI :
        Unsupported major.minor version 52.0
                at java.lang.ClassLoader.defineClass1(Native Method)
                at
        java.lang.ClassLoader.defineClass(ClassLoader.java:648)
                at
        java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
                at
        java.net.URLClassLoader.defineClass(URLClassLoader.java:272)
                at
        java.net.URLClassLoader.access$000(URLClassLoader.java:68)
                at
        java.net.URLClassLoader$1.run(URLClassLoader.java:207)
                at
        java.net.URLClassLoader$1.run(URLClassLoader.java:201)
                at
        java.security.AccessController.doPrivileged(Native Method)
                at
        java.net.URLClassLoader.findClass(URLClassLoader.java:200)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:325)
                at
        sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:296)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:270)
                at
        sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:406)

        On Tuesday, June 25, 2019 at 8:12:58 AM UTC-6, Eric Fetzer
        wrote:

            This makes no sense.  When I run the command:

            java -cp /my/path/to/jar/jenkins-cli.jar -s
            http://myJenkinsServer:8080 -i /my/key/id_rsa help

            I get:

                Neither -s nor the JENKINS_URL env var is specified.
                Jenkins CLI
                Usage: java -jar jenkins-cli.jar [-s URL] command
                [opts...] args...
                Options:
                -s URL       : the server URL (defaults to the
                JENKINS_URL env var)
                -i KEY       : SSH private key file used for
                authentication
                -p HOST:PORT : HTTP proxy host and port for HTTPS
                proxy tunneling. See
                http://jenkins-ci.org/https-proxy-tunnel
                -noCertificateCheck : bypass HTTPS certificate check
                entirely. Use with caution
                -noKeyAuth   : dont try to load the SSH
                authentication private key. Conflicts with -i

                The available commands depend on the server. Run the
                help command to
                see the list.


            So I figure I'll play, and set the env variable even
            though the -s was in there plain as day.  So I do:

            export JENKINS_URL='http://my.JenkinsServer:8080'
            java -cp /my/path/to/jar/jenkins-cli.jar -jar
            /my/path/to/jar/jenkins-cli.jar -i /my/key/id_rsa help

            I get:


                Exception in thread "main" java.io.IOException:
                Failed to connect to http://my.JenkinsServer:8080/
                        at hudson.cli.CLI.getCliTcpPort(CLI.java:271)
                        at hudson.cli.CLI.<init>(CLI.java:126)
                        at
                
hudson.cli.CLIConnectionFactory.connect(CLIConnectionFactory.java:72)
                        at hudson.cli.CLI._main(CLI.java:471)
                        at hudson.cli.CLI.main(CLI.java:387)
                Caused by: java.net.UnknownHostException:
                my.JenkinsServer
                        at java.net
                
<http://java.net>.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:175)
                        at
                java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
                        at java.net.Socket.connect(Socket.java:543)
                        at java.net.Socket.connect(Socket.java:492)
                        at
                sun.net.NetworkClient.doConnect(NetworkClient.java:178)
                        at
                sun.net.www.http.HttpClient.openServer(HttpClient.java:417)
                        at
                sun.net.www.http.HttpClient.openServer(HttpClient.java:519)
                        at
                sun.net.www.http.HttpClient.<init>(HttpClient.java:203)
                        at
                sun.net.www.http.HttpClient.New(HttpClient.java:296)
                        at
                sun.net.www.http.HttpClient.New(HttpClient.java:315)
                        at
                
sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1004)
                        at
                
sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:940)
                        at
                
sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:858)
                        at hudson.cli.CLI.getCliTcpPort(CLI.java:269)
                        ... 4 more


            A week ago I had no issues whatsoever.  Both of these
            servers were patched since then.  Both servers are RHEL
            6.10.  Jenkins version 2.176.1.  Any ideas of what my
            sudden issue could be or where to start trouble shooting
            this?

            Thanks,
            Eric

-- You received this message because you are subscribed to the
        Google Groups "Jenkins Users" group.
        To unsubscribe from this group and stop receiving emails
        from it, send an email to jenkins...@googlegroups.com.
        To view this discussion on the web visit
        
https://groups.google.com/d/msgid/jenkinsci-users/6eef6538-ad55-49e9-8ae0-ed2c727509de%40googlegroups.com
        
<https://groups.google.com/d/msgid/jenkinsci-users/6eef6538-ad55-49e9-8ae0-ed2c727509de%40googlegroups.com?utm_medium=email&utm_source=footer>.
        For more options, visit https://groups.google.com/d/optout.

-- Eric Pyle
        Siemens PLM Software
        Lebanon, NH
        +1 603-277-3060
        eric...@siemens.com
        http://www.siemens.com/plm

-- You received this message because you are subscribed to the
    Google Groups "Jenkins Users" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to jenkinsci-users+unsubscr...@googlegroups.com
    <mailto:jenkinsci-users+unsubscr...@googlegroups.com>.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/jenkinsci-users/f225f651-4f68-4f1c-81fd-bd0705305414%40googlegroups.com
    
<https://groups.google.com/d/msgid/jenkinsci-users/f225f651-4f68-4f1c-81fd-bd0705305414%40googlegroups.com?utm_medium=email&utm_source=footer>.
    For more options, visit https://groups.google.com/d/optout.

-- Eric Pyle
    Siemens PLM Software
    Lebanon, NH
    +1 603-277-3060
    eric.p...@siemens.com  <mailto:eric.p...@siemens.com>
    http://www.siemens.com/plm


--
Eric Pyle
Siemens PLM Software
Lebanon, NH
+1 603-277-3060
eric.p...@siemens.com
http://www.siemens.com/plm

--
You received this message because you are subscribed to the Google Groups "Jenkins 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/ddecb967-78fb-70cc-2986-e4b6d8f795bb%40siemens.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to