Ganymed SSH2 for Java is a library which implements the SSH-2 protocol in pure Java (tested on J2SE 1.4.2 and 5.0). It allows one to connect to SSH servers from within Java programs. It supports SSH sessions (remote command execution and shell access), local and remote port forwarding, local stream forwarding, X11 forwarding and SCP. There are no dependencies on any JCE provider, as all crypto functionality is included.


  • 100% Java implementation of the SSH-2 protocol (tested on J2SE 1.4.2 and 5.0)
  • No dependency on any JCE provider, all crypto functionality is included in the Ganymed SSH2 for Java library.
  • Supports SSH sessions (remote command execution and shell access), X11 forwarding, local and remote port forwarding, local stream forwarding and SCP.
  • Thread safe, multiple threads can concurrently execute commands, open shells etc. on the same SSH connection.
  • Available ciphers: aes256-ctr, aes192-ctr, aes128-ctr, blowfish-ctr, aes256-cbc, aes192-cbc, aes128-cbc, blowfish-cbc, 3des-ctr and 3des-cbc.
  • Supports DSA and RSA server keys (ssh-dss and ssh-rsa). Extensive support for known_hosts file handling.
  • Key exchange methods: diffie-hellman-group-exchange-sha1 (parameters configurable), diffie-hellman-group14-sha1 and diffie-hellman-group1-sha1.
  • Supported MAC algorithms: hmac-sha1-96, hmac-sha1, hmac-md5-96 and hmac-md5.
  • User authentication: password, keyboard-interactive and public-key with DSA and RSA keys (client-side private keys (PEM format) may also be 3DES, DES or AES encrypted).

Licence: BSD License

SSH Factory is a set of Java based client components for communicating with SSH and telnet servers. Including both SSH (Secure Shell) and telnet components, developers will appreciate the easy-to-use API making it possible to communicate with a remote server using just a few lines of code.

In addition, SSH Factory includes a full-featured scripting API and easy to use scripting language. This allows developers to build and automate complex tasks with a minimum amount of effort.

Licence: Proprietary

JSch is a pure Java implementation of SSH2.

JSch allows you to connect to an sshd server and use port forwarding, X11 forwarding, file transfer, etc., and you can integrate its functionality into your own Java programs.

Licence: BSD License

JCTerm(JCraft's Term) is a pure Java VT100 terminal emulator for SSH2. This terminal emulator also allows you to enjoy port forwarding, X11 forwarding, etc.

Licence: LGPL

Maverick is a Model-View-Controller (aka "Model 2") framework for web publishing using Java and J2EE. It is a minimalist framework which focuses solely on MVC logic, allowing you to generate presentation using a variety of templating and transformation technologies.

In principle it combines the best features of Struts, WebWork, and Cocoon2, however:

  • Maverick is simple to use - this is a minimalist framework that anyone can understand easily. This is not a "kitchen sink" framework that tries to provide everything you need to build a web application; there are plenty of great database connection pools, application servers, validation frameworks, templating languages, etc already out there.
  • Maverick is simple to understand - the code is easy to understand, there's not a lot of it, and it's designed with pluggability and extendability in mind. The idea of a Controller that builds a Model that gets rendered by a View is very simple and straightforward, so the framework should be too.
  • Maverick is agnostic about view technologies - you can use any templating engine you like with Maverick. Examples are provided for JSP (with JSTL - no need for special tag libaries), Velocity, and Domify/XSLT. The developers of Maverick actively use all three of these in their "real life" to build web applications.
  • You can run your view output through a pipeline of transformations. Maverick-supplied transformations include XSLT, DVSL, "wrapping" layout transformations, FOP, and Perl. You can efficiently chain many transformations of various types together, and you can specify this on a per-view basis. Of course, transformation technologies are pluggable and you can easily define your own.
  • In addition you can halt the transformation process at any point and output the intermediate content. If you're using XSLT, this is a great way to produce static XML and build your templates offline with standard tools.
  • Your commands, controllers, views, and transforms are configured with an easy-to-understand XML sitemap. For even more flexibility, you can preprocess it with XSLT.
  • Maverick will automagically pick from different views based on user language, browser type, or any other characteristic of the request. Of course, this behavior is pluggable.
  • Maverick supports both Struts-style singleton Controllers (aka Actions) and Webwork-style "throwaway" Controllers.
  • Maverick is multi-platform; it has been ported to both .NET and PHP.

Depending on what templating technology you choose, you may be interested in one or more of the following features:

  • Maverick can automatically "domify" (or "saxify") arbitrary Java objects so that XSLT can be used without the effort and processing overhead of generating and parsing text XML. XSLT can be used as a templating language directly on your model just like JSP.
  • For text-based templating engines like JSP or Velocity, an elegant way to apply a common "look and feel" and layout to a set of views is to use the "wrapping" transformation. The output of the previous step is made available to subsequent steps as a String variable which can be placed anywhere on the page.
  • FOP transformations allow your application to produce PDF, Postscript, PCL, and a half-dozen other document formats on-the-fly.
  • An interesting alternative to XSLT is DVSL. This is a declarative templating language patterned after XSLT but based on Velocity.

Licence: Apache License

SSHTools is a suite of Java SSH applications providing a Java SSH API, SSH Terminal, SSH secured VNC client, SFTP client and SSH Daemon.

Licence: LGPL