1

There exists a very old question SSH library for Java focused on libraries to user for SSH in JAVA...However it is now so large and has so many answers that are likely to be out of date I feel that it needs re-asking...so we users can quickly find the most up to date info.

Also I am suprised that we don't have a native JAVA JDK implementation for this very common use case by now. Adding this in to Java was suggested and closed in https://bugs.openjdk.java.net/browse/JDK-6775421 but I wonder if that decision should or did get revised?

So what are the best SSH liraries in 2021 or is there a JDK appraoch now?

Table of libs pro/cons:

Library Pros Cons
https://github.com/hierynomus/sshj Maintained, high commit freq lots of open issues
http://www.jcraft.com/jsch/ Was very popular at one time legacy mode, no public repo I can find
https://github.com/apache/mina-sshd
http://mina.apache.org/sshd-project
- Backed by Apache?
- Got a decent website
- Frequent commits

- Documentation not amazing according to linked SO
- commits mostly one guy
- no issues in GH
https://github.com/sshtools/maverick-synergy -3 active contributors
-fairly freq commits
- allied commercial product
- older product
..
2

I think it's unlikely that a Java SSH implementation would ever make it into a JDK. SSH is not SSL; SSL is easy to support because the RFC is quite simple (when compared to SSH) and has a single job to provide security over a TCPIP socket.

With SSL the JDK developers can sit back and let others implement solutions using it whilst supporting just the RFC protocol; with SSH its more complex because providing an SSH transport in the JDK without implementing the additional features like SFTP, forwarding or execution of commands renders the implementation useless. So it's not a small project to bring the JDK, and then they have to support it!

I've been developing Java SSH APIs and solutions now since 2002 when there was nothing but Mindterm (not truly open source), Jsch and my own implementation J2SSH. Many implementations have come and gone since then, the difficulty is that the complexity and wide variety of SSH implementations (regardless of platform) requires a lot of support, which is why my path went down the commercial route, and I still support many software vendors today that use my APIs.

My third generation API, Maverick Synergy is available under an open source license (LGPL). This API is NIO based and builds on the knowledge and components developed in commercial APIs that have been in continuous development since 2003.

https://github.com/sshtools/maverick-synergy

2
  • Thanks @Lee David Painter I agree it is not a trivial thing to address all the needs of SSH but wondered if maybe this had been addressed in some way since since we are very often developing for cloud environments these days SSH is so much part of daily workflows I half expected some JEP to have existed for it...Have updated my list above to include yours.. – SystemsInCode May 4 at 12:03
  • Was getting tired of hacky scripts and was thinking about making a GUI for it but looks like you already have with Desktop SSH Agent - so I'll give that a whirl... – SystemsInCode May 4 at 12:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.