title: Jsch not working with certain sftp servers
body: <p>This question is almost a copy of <a href="https://stackoverflow.com/questions/27557181/java-1-7-jsch-java-security-invalidkeyexception-key-is-too-long-for-this-alg">this</a>. But since it went unresolved I want to ask if some other figured out the a work around with JSCH java library ??<br/><br/>
  The problem again is that I can connect to most of the SSH server using JSCH library but there seems to be this one server I've encountered that I cannot connect to using JSCH. While establishing a connection it throws out a exception stating : </p>
  
  <pre class="lang-none prettyprint-override"><code>INFO: Connecting to xxxx.xxxxx.com port 22
  INFO: Connection established
  INFO: Remote version string: SSH-2.0-2.0
  INFO: Local version string: SSH-2.0-JSCH-0.1.53
  INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256
  INFO: CheckKexes: diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
  INFO: CheckSignatures: ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
  INFO: SSH_MSG_KEXINIT sent
  INFO: SSH_MSG_KEXINIT received
  INFO: kex: server: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1
  INFO: kex: server: ssh-dss
  INFO: kex: server: aes128-cbc,rijndael128-cbc,3des-cbc,blowfish-cbc,aes192-cbc,rijndael192-cbc,aes256-cbc,rijndael256-cbc,rijndael-cbc@lysator.liu.se,cast128-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
  INFO: kex: server: aes128-cbc,rijndael128-cbc,3des-cbc,blowfish-cbc,aes192-cbc,rijndael192-cbc,aes256-cbc,rijndael256-cbc,rijndael-cbc@lysator.liu.se,cast128-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
  INFO: kex: server: hmac-md5,hmac-sha1,hmac-sha1-96,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96
  INFO: kex: server: hmac-md5,hmac-sha1,hmac-sha1-96,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96
  INFO: kex: server: zlib,none
  INFO: kex: server: zlib,none
  INFO: kex: server: 
  INFO: kex: server: 
  INFO: kex: client: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
  INFO: kex: client: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
  INFO: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-ctr,aes192-cbc,aes256-ctr,aes256-cbc
  INFO: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-ctr,aes192-cbc,aes256-ctr,aes256-cbc
  INFO: kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96
  INFO: kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96
  INFO: kex: client: none
  INFO: kex: client: none
  INFO: kex: client: 
  INFO: kex: client: 
  INFO: kex: server-&gt;client aes128-ctr hmac-md5 none
  INFO: kex: client-&gt;server aes128-ctr hmac-md5 none
  INFO: SSH_MSG_KEXDH_INIT sent
  INFO: expecting SSH_MSG_KEXDH_REPLY
  INFO: Disconnecting from xxxxx.xxxxx.com port 22
  com.jcraft.jsch.JSchException: Session.connect: java.security.InvalidKeyException: Key is too long for this algorithm
      at com.jcraft.jsch.Session.connect(Session.java:558)
      at com.jcraft.jsch.Session.connect(Session.java:183)
      at com.test.filetransfer.SftpDownload.main(SftpDownload.java:29)
  Exception occurred : Session.connect: java.security.InvalidKeyException: Key is too long for this algorithm
  </code></pre>
  
  <p>I already have installed the unlimited encryption policy but
  it seems to be the problem with default Java JCE provider which supports DH and DSA generation to 1024 bits. This stack supports my claim :  <br/> <br></p>
  
  <pre><code>com.jcraft.jsch.JSchException: Session.connect failed
      at com.jcraft.jsch.Session.connect(Session.java:560)
      at com.jcraft.jsch.Session.connect(Session.java:184)
      at com.test.filetransfer.SftpDownload.main(SftpDownload.java:28)
  Caused by: java.security.InvalidKeyException: Key is too long for this algorithm
      at sun.security.provider.DSA$LegacyDSA.checkKey(DSA.java:487)
      at sun.security.provider.DSA.engineInitVerify(DSA.java:152)
      at java.security.Signature$Delegate.init(Signature.java:1124)
      at java.security.Signature$Delegate.chooseProvider(Signature.java:1087)
      at java.security.Signature$Delegate.engineInitVerify(Signature.java:1142)
      at java.security.Signature.initVerify(Signature.java:452)
      at com.jcraft.jsch.jce.SignatureDSA.setPubKey(SignatureDSA.java:52)
      at com.jcraft.jsch.KeyExchange.verify(KeyExchange.java:269)
      at com.jcraft.jsch.DHG1.next(DHG1.java:187)
      at com.jcraft.jsch.Session.connect(Session.java:327)
  </code></pre>
  
  <p><br/>
  I really don't want to ditch JSCH library due to it's rich feature,popularity and documentation and the server is out of our jurisdiction.
  <br><br>
  So is there a workaround anyone has figured out using JSCH library ???</p>