SSH API Façade

SSH API Façade is yet another Java library that enables connections to be made to SSH servers. It provides access to all of the common functions, such as remote shell, file transfer and port forwarding, as well as some more advanced features such as GSSAPI authentication.

SSH API is actually useless on its own! Instead, it is made up of a collection of interfaces that must be implemented by a Provider Bridge. It serves as a simple facade or abstraction for various SSH client implementations (or Providers as they are known in this API) such as J2SSH Maverick, J2SSH or JSch. Think of it like SLF4J, but for SSH instead of logging.

Why Would I Want To Use It?

SSH API will allow your application to plug-in the required provider at deployment time or even run time depending on it's needs.

There are a number of reasons why you may wish to do this, including :-

1. Licensing requirements

SSHAPI itself and the provider bridges are licensed under a commercial-friendly MIT style license. However, the various providers use a number of different licenses, including Commercial. By using SSH API, you can provide alternatives for those who can't use your preferred provider.

2. Cryptography export limitations

You can provide the most appropriate provider if affected by local cryptography export laws.

3. Feature requirements

Some providers for example implement more ciphers that others. If the preferred provider used will vary, then you can use SSHAPI's capability query features to gracefully degrade your application depending on what is supported by the provider.

4. Zero cost switching

You are somewhat protected if a provider becomes unmaintained, or a security issue is found. You can easily switch the provider used without changing your application.

When Shouldn't I use SSH API?

If you require low-level access to the SSH protocol, or wish to extend it some other way, SSHAPI is not for you.

Some support for a lower level API may be provided in the future, but it is likely to be very dependent on the provider.