= sshj - SSHv2 library for Java Jeroen van Erp :sshj_groupid: com.hierynomus :sshj_version: 0.15.0 :source-highlighter: pygments image::https://travis-ci.org/hierynomus/sshj.svg?branch=master[] To get started, have a look at one of the examples. Hopefully you will find the API pleasant to work with :) == Getting SSHJ To get SSHJ, you have two options: . Add a dependency to SSHJ to your project. . Build SSHJ yourself. And, if you want, you can also run the SSHJ examples. Binary releases of SSHJ are not provided here, but you can download it http://search.maven.org/#artifactdetails%7C{sshj_groupid}%7Csshj%7C{sshj_version}%7Cjar[straight from the Maven Central repository] if you want to. == Depending on SSHJ If you're building your project using Maven, you can add the following dependency to the `pom.xml`: [source,xml,subs="verbatim,attributes"] ---- {sshj_groupid} sshj {sshj_version} ---- If your project is built using another build tool that uses the Maven Central repository, translate this dependency into the format used by your build tool. == Building SSHJ . Clone the Overthere repository. . Ensure you have Java6 installed with the http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html[Unlimited strength Java Cryptography Extensions (JCE)]. . Run the command `./gradlew clean build`. == Running the examples In the `examples` directory, there is a separate Maven project that shows how the library can be used in some sample cases. If you want to run them, follow these guidelines: . Install http://maven.apache.org/[Maven 2.2.1] or up. . Clone the Overthere repository. . Go into the `examples` directory and run the command `mvn eclipse:eclipse`. . Import the `examples` project into Eclipse. . Change the login details in the example classes (address, username and password) and run them! == Features of the library include: * reading known_hosts files for host key verification * publickey, password and keyboard-interactive authentication * command, subsystem and shell channels * local and remote port forwarding * scp + complete sftp version 0-3 implementation == Supported algorithms Implementations / adapters for the following algorithms are included: ciphers:: `aes{128,192,256}-{cbc,ctr}`, `blowfish-{cbc,ctr}`, `3des-{cbc,ctr}`, `twofish{128,192,256}-{cbc,ctr}`, `twofish-cbc`, `serpent{128,192,256}-{cbc,ctr}`, `idea-{cbc,ctr}`, `cast128-{cbc,ctr}`, `arcfour`, `arcfour{128,256}` SSHJ also supports the following extended (non official) ciphers: `camellia{128,192,256}-{cbc,ctr}`, `camellia{128,192,256}-{cbc,ctr}@openssh.org` key exchange:: `diffie-hellman-group1-sha1`, `diffie-hellman-group14-sha1`, `diffie-hellman-group-exchange-sha1`, `diffie-hellman-group-exchange-sha256`, `ecdh-sha2-nistp256`, `ecdh-sha2-nistp384`, `ecdh-sha2-nistp521`, `curve25519-sha256@libssh.org` signatures:: `ssh-rsa`, `ssh-dss`, `ecdsa-sha2-nistp256`, `ssh-ed25519` mac:: `hmac-md5`, `hmac-md5-96`, `hmac-sha1`, `hmac-sha1-96`, `hmac-sha2-256`, `hmac-sha2-512` compression:: `zlib` and `zlib@openssh.com` (delayed zlib) private key files:: `pkcs8` encoded (what openssh uses) If you need something that is not included, it shouldn't be too hard to add (do contribute it!) == Comparing to other implementations http://ssh-comparison.quendi.de/comparison.html[SSH Implementation Comparison] == Dependencies Java 6+. http://www.slf4j.org/download.html[slf4j] is required. http://www.bouncycastle.org/java.html[bouncycastle] is highly recommended and required for using some of the crypto algorithms. http://www.jcraft.com/jzlib/[jzlib] is required for using zlib compression. == Reporting bugs Issue tracker: https://github.com/hierynomus/sshj/issues == Discussion Google Group: http://groups.google.com/group/sshj-users == Contributing Fork away! == Release history SSHJ 0.15.0 (2015-11-20):: * Fixed https://github.com/hierynomus/sshj/issues/220[#220]: Added support for `ssh-ed25519` host keys * Fixed https://github.com/hierynomus/sshj/issues/225[#225]: Fixed bug in ECDSA fingerprint calculation that sometimes produced an incorrect fingerprint * Added `arcfour` Stream Ciphers from RFC4253 and RFC4345 * Added all Block Ciphers from RFC4344 and RFC4253 SSHJ 0.14.0 (2015-11-04):: * Fixed https://github.com/hierynomus/sshj/issues/171[#171]: Added support for `curve25519-sha256@libssh.org` key exchange algorithm * Added support for `ecdh-sha2-nistp256`, `ecdh-sha2-nistp384` and `ecdh-sha2-nistp521` key exchange algorithms * Fixed https://github.com/hierynomus/sshj/issues/167[#167]: Added support for `diffie-hellman-group-exchange-sha1` and `diffie-hellman-group-exchange-sha256` key exchange methods * Fixed https://github.com/hierynomus/sshj/issues/212[#212]: Configure path escaping to enable shell expansion to work correctly * Merged https://github.com/hierynomus/sshj/issues/210[#210]: RemoteFileInputStream.skip returns wrong value (Fixes https://github.com/hierynomus/sshj/issues/209[#209]) * Merged https://github.com/hierynomus/sshj/issues/208[#208]: Added SCP bandwidth limitation support * Merged https://github.com/hierynomus/sshj/issues/211[#211]: Made keyfile format detection more robust SSHJ 0.13.0 (2015-08-18):: * Merged https://github.com/hierynomus/sshj/issues/199[#199]: Fix for IndexOutOfBoundsException in ReadAheadRemoteFileInputStream, fixes https://github.com/hierynomus/sshj/issues/183[#183] * Merged https://github.com/hierynomus/sshj/issues/195[#195]: New authentication supported: `gssapi-with-mic` * Merged https://github.com/hierynomus/sshj/issues/201[#201]: New option to verify negotiated key exchange algorithms * Merged https://github.com/hierynomus/sshj/issues/196[#196]: Fix for looking up complete hostname in known hosts file SSHJ 0.12.0 (2015-04-14):: * Added support for HTTP proxies when running JDK6 or JDK7, fixes: https://github.com/hierynomus/sshj/issues/170[#170] * Merged https://github.com/hierynomus/sshj/issues/186[#186]: Fix for detecting end-of-stream * Compiling to JDK6, fixes https://github.com/hierynomus/sshj/issues/179[#179] and https://github.com/hierynomus/sshj/issues/185[#185] * Correctly close socket and channel when LocalPortForwarder fails to open and start the channel (Fixes https://github.com/hierynomus/sshj/issues/175[#175] and https://github.com/hierynomus/sshj/issues/176[#176]) * Merged https://github.com/hierynomus/sshj/issues/181[#181]: Invalid write packet length when reading with offset (Fixes https://github.com/hierynomus/sshj/issues/180[#180]) SSHJ 0.11.0 (2015-01-23):: * New maven coordinates `com.hierynomus:sshj:0.11.0` as https://github.com/hierynomus[@hierynomus] took over as maintainer of SSHJ * Migrated build system to Gradle 2.2.1 * Merged https://github.com/hierynomus/sshj/issues/150[#150]: Fix for incorrect file handle on some SSH servers, fixes: https://github.com/hierynomus/sshj/issues/54[#54], https://github.com/hierynomus/sshj/issues/119[#119], https://github.com/hierynomus/sshj/issues/168[#168], https://github.com/hierynomus/sshj/issues/169[#169] * Made `jzlib` optional in OSGi bundling, fixes: https://github.com/hierynomus/sshj/issues/162[#162] * Improved some log levels, fixes: https://github.com/hierynomus/sshj/issues/161[#161] * Merged https://github.com/hierynomus/sshj/issues/156[#156], https://github.com/hierynomus/sshj/issues/164[#164], https://github.com/hierynomus/sshj/issues/165[#165]: Fixed block sizes for `hmac-sha2-256` and `hmac-sha2-512` * Merged https://github.com/hierynomus/sshj/issues/141[#141]: Add proxy support * Merged https://github.com/hierynomus/sshj/issues/157[#157], https://github.com/hierynomus/sshj/issues/163[#163]: Doc and build fixes * Upgraded BouncyCastle to 1.51, fixes: https://github.com/hierynomus/sshj/issues/142[#142] * Implemented keep-alive with connection drop detection, fixes https://github.com/hierynomus/sshj/issues/166[#166]