Java SSH2 libraries in depth: Trilead/Ganymed/Orion [/other?]
I have been searching for a pure Java SSH library to use for a project. The single most important neede开发者_JAVA百科d feature is that it has to be able to work with command-line git, but remote-controlling command-line tools is also important.
A pretty common choice, e.g. used in the IntelliJ IDEA git integration (which works very well), seems to be Trilead SSH2. Looking at their website, it's not being maintained any more.
Trilead seems to have been a fork of Ganymed SSH2, which was a ETH Zurich project that didn't see releases for a while, but had a recent release by its new owner, Christian Plattner.
There is another actively maintained fork from that code base, Orion SSH, that saw an even more recent release, but which seems to get mentioned online much less than the other 2 forks.
Has anybody here worked with any of (or, if possible, both) of Ganymed and Orion and could kindly describe the development experience with either/both?
Accuracy of documentation [existence of documentation?], stability, buggyness... - all of these would be highly interesting to me. Performance is not so important for my current project.
If there is another pure-Java SSH implementation that should be used instead, please feel free to mention it, but please don't just mention a name...describe your judgment from actual experience.
Sorry if this question may seem a bit "do my homework"-y, but I've really searched for reviews. Everything out there seems to be either a listing of implementations or short "use this! it's great!" snippets.
Ganymed is now actively maintained again with an open development process at Google Code.
Jsch is another pure java ssh implementation. It's used by plenty of big projects, but I've heard the API is hard to use - I haven't used it personally.
I've used Ganymed-ssh for (rather simple but critical) task in production code with no problems.
There is also the Maverick project.
I've used ganymed, migrated to trilead, for several years. The basic functionality is quite stable, I would recommend it.
However, one issue to be aware of is that the threading model is very basic (thread per session). So it is very thread-hungry if you require many sessions at one time. That's really the only limitation we've run into.
The documentation is okay. There are enough examples to get yourself going in very little time.
TMateSoft is actively maintaining Trilead SSH2 in their Subversion repository, and publishing new releases to Maven (most recently, of this writing, adding SSH agent support in build 217).
There is also a patched Trilead used in Jenkins, though changes are restricted to those directly applicable to this usage.
精彩评论