This is an attempt at a comprehensive, open source implementation of OpenSSH for the
Java platform. It includes both the SSH1 and SSH2 protocols, and supports
a number of different cryptographic algorithms, based on the Sun JCE Java
extensions.
Justification
Few free Java SSH implementations. Those that do exist are under GPL,
and often slow. Want a OpenBSD-license implementation to be compatible with
the Apache project. In particular would like to implement a fast SSH and
SCP task for Jakarta Ant.
Implementation
The implementation at this point is simply being built from OpenSSH-3.1p1
sources from the Cygwin distribution. The goal here is to keep as close as
possible to the original implementation so that changes and bugfixes in
that codebase can easily be ported to the Java implementation. At the same
time, small amounts of refactoring is done to give it a cleaner OO structure
and to avoid reimplementing classes already available for Java (ie by using
java.math.BigInteger, java.security.* and the javax.crypto.* packages to
eliminate the OpenSSL dependencies).
System Requirements
Java 2 (tested with Sun JDK 1.4 on Windows/Linux - testers required for other JDKs)
JCE implementation (tested with Sun JDK 1.4) that provides unlimited-strength cryptography.
Development Timeline
The current development timeline is:
Early August, 2002 - 0.5 alpha - as soon as a complete SSH session can
be completed with one set of options.
Mid-September, 2002 - 0.9 beta - once most features are filled out, including
an SCP implementation, core cryptographic algorithms and all key based authentication.
Early October, 2002 - 1.0 release - bugs fixed and all practical options
implemented.
This timeline is based largely on my available time which can be dramatically
reduced at times, and the availability of other contributors.
Contributing
I'd love to collaborate on this, so if you are interested get in touch.
I'm keeping CVS local until 0.5 alpha, however if there is anyone seriously
interested in helping out I will make it available immediately and add them
as a project developer.
SSH Server
At this point there is no plan to implement sshd, the SSH server. If requested,
a threaded server could be implemented, however this obviously doesn't provide
the same facilities as a native executable can, and there are already good
implementations for at least as many platforms as those that run Java.
Contact
I'm available to be contacted at any time at
brettporter@yahoo.com. I'd especially like to hear from potential
users, or contributors.
Links
Here are some useful SSH links:
OpenSSH.org - The C implementation
I am basing it on.
Cygwin.com - A windows implementation
of Unix utilities, including OpenSSH.