sockets - timeout at net.schmizz.sshj.transport.KeyExchanger.waitForDone(KeyExchanger.java:160) -


i have nightly job using net.schmizz.sshj sftp library.

i suspect there change on server sftp into. however, cannot pinpoint exact change is. nor can reproduce outside production server. looking insight of root cause or how reproduce following error

net.schmizz.sshj.transport.transportexception: timeout expired @ net.schmizz.sshj.transport.transportexception$1.chain(transportexception.java:33) @ net.schmizz.sshj.transport.transportexception$1.chain(transportexception.java:27) @ net.schmizz.concurrent.promise.retrieve(promise.java:139) @ net.schmizz.concurrent.event.await(event.java:103) @ net.schmizz.sshj.transport.keyexchanger.waitfordone(keyexchanger.java:160) @ net.schmizz.sshj.transport.keyexchanger.startkex(keyexchanger.java:155) @ net.schmizz.sshj.transport.transportimpl.dokex(transportimpl.java:247) @ net.schmizz.sshj.sshclient.dokex(sshclient.java:735) @ net.schmizz.sshj.sshclient.onconnect(sshclient.java:723) @ net.schmizz.sshj.socketclient.connect(socketclient.java:54) @ net.schmizz.sshj.socketclient.connect(socketclient.java:80)

from can tell, we're connecting via java.net.socket ok , timing out waiting key exchange complete in code

package net.schmizz.sshj.transport;  /** algorithm negotiation , key exchange. */ final class keyexchanger         implements sshpackethandler, errornotifiable {      /**      * starts key exchange sending {@code ssh_msg_kexinit} packet. key exchange needs done once mandatorily      * after initializing {@link transport} usable , may initiated @ later point e.g. if      * {@link transport#getconfig() algorithms} have changed , should renegotiated.      *      * @param waitfordone whether should block till key exchange completed      *      * @throws transportexception if there error during key exchange      * @see {@link transport#settimeoutms} setting timeout kex      */     void startkex(boolean waitfordone)             throws transportexception {         if (!kexongoing.getandset(true)) {             done.clear();             sendkexinit();         }         if (waitfordone)             waitfordone();     }      /**      * sends ssh_msg_kexinit , sets {@link #kexinitsent} event.      *      * @throws transportexception      */     private void sendkexinit()             throws transportexception {         log.debug("sending ssh_msg_kexinit");         clientproposal = new proposal(transport.getconfig());         transport.write(clientproposal.getpacket());         kexinitsent.set();     }  void waitfordone()         throws transportexception {     done.await(transport.gettimeoutms(), timeunit.milliseconds); } 

after debugging after posting question figured out problem don't have same encryption libraries running in production environments did in local testing. determined building minimal jar while still retaining sshj pieces used in production , relevant code of our own , running debug level logging in command shell see output. saw following , realized timeout exception in our production server logs second exception occurring after , masking root cause not being logged in production: noclassdeffounderror

exception in thread "reader" java.lang.noclassdeffounderror: org/bouncycastle/crypto/ec/customnamedcurves     @ net.schmizz.sshj.transport.kex.curve25519dh.getcurve25519params(curve25519dh.java:51)     @ net.schmizz.sshj.transport.kex.curve25519sha256.initdh(curve25519sha256.java:36)     @ net.schmizz.sshj.transport.kex.abstractdhg.init(abstractdhg.java:55)     @ net.schmizz.sshj.transport.keyexchanger.gotkexinit(keyexchanger.java:239)     @ net.schmizz.sshj.transport.keyexchanger.handle(keyexchanger.java:359)     @ net.schmizz.sshj.transport.transportimpl.handle(transportimpl.java:493)     @ net.schmizz.sshj.transport.decoder.decode(decoder.java:107)     @ net.schmizz.sshj.transport.decoder.received(decoder.java:175)     @ net.schmizz.sshj.transport.reader.run(reader.java:60) caused by: java.lang.classnotfoundexception: org.bouncycastle.crypto.ec.customnamedcurves     @ java.net.urlclassloader.findclass(urlclassloader.java:381)     @ java.lang.classloader.loadclass(classloader.java:424)     @ sun.misc.launcher$appclassloader.loadclass(launcher.java:331)     @ java.lang.classloader.loadclass(classloader.java:357)     ... 9 more  net.schmizz.sshj.transport.transportexception: timeout expired     @ net.schmizz.sshj.transport.transportexception$1.chain(transportexception.java:33)     @ net.schmizz.sshj.transport.transportexception$1.chain(transportexception.java:27)     @ net.schmizz.concurrent.promise.retrieve(promise.java:139)     @ net.schmizz.concurrent.event.await(event.java:103)     @ net.schmizz.sshj.transport.keyexchanger.waitfordone(keyexchanger.java:160)     @ net.schmizz.sshj.transport.keyexchanger.startkex(keyexchanger.java:155)     @ net.schmizz.sshj.transport.transportimpl.dokex(transportimpl.java:247)     @ net.schmizz.sshj.sshclient.dokex(sshclient.java:735)     @ net.schmizz.sshj.sshclient.onconnect(sshclient.java:723)     @ net.schmizz.sshj.socketclient.connect(socketclient.java:54)     @ net.schmizz.sshj.socketclient.connect(socketclient.java:80)     @ kirby.app.connect(app.java:101)     @ kirby.app.execute(app.java:45)     @ kirby.app.main(app.java:31) caused by: java.util.concurrent.timeoutexception: timeout expired     ... 12 more 

the difference comes down classpath. in production had

bcpg-jdk15on-150.jar:bcpkix-jdk15on-150.jar:bcprov-jdk15on-150.jar

but need

bcpkix-jdk15on/1.51/bcpkix-jdk15on-1.51.jar:ecc-25519-java-1.0.1.jar:bcprov-jdk15on/1.51/bcprov-jdk15on-1.51.jar


Comments

  1. Sockets - Timeout At
    Net.Schmizz.Sshj.Transport.Keyexchanger.Waitfordone(Keyexchanger.Java:160)
    - >>>>> Download Now

    >>>>> Download Full

    Sockets - Timeout At
    Net.Schmizz.Sshj.Transport.Keyexchanger.Waitfordone(Keyexchanger.Java:160)
    - >>>>> Download LINK

    >>>>> Download Now

    Sockets - Timeout At
    Net.Schmizz.Sshj.Transport.Keyexchanger.Waitfordone(Keyexchanger.Java:160)
    - >>>>> Download Full

    >>>>> Download LINK Sy

    ReplyDelete

Post a Comment

Popular posts from this blog

scala - 'wrong top statement declaration' when using slick in IntelliJ -

c# - DevExpress.Wpf.Grid.InfiniteGridSizeException was unhandled -

Laravel Bind Multiple Class to One Contract in The Service Provider -