Skip to content
Shikhar Bhushan edited this page Aug 11, 2013 · 47 revisions

version 0.9.0-SNAPSHOT

  • Throw IllegalStateException for sanity-checking instead of assert statements inside SSHClient (GH-89)
  • Use debug rather than info logging when failing to load keys from a location in sshClient.authPublickey(user, locations...) (GH-84)
  • Possibility of ArrayIndexOutOfBoundsException on channelOutputStream.write() (GH-99, GH-104)
  • We were missing a socket flush during the initial SSH banner exchange.
  • Connection and transport layer timeout methods are now millisecond granularity. getTimeout()/setTimeout() are called getTimeoutMs()/setTimeoutMs() respectively.
  • .. TODO

version 0.8.1

  • Made logs less chatty by changing some info logging to be debug logging (GH-80)
  • Regex pattern matching for password prompt in PasswordResponseProvider (GH-77)
  • abstractChannel.close() should be no-op if the channel is already closed. (GH-53?)

version 0.8.0

  • Make sshClient.disconnect() no-op if already disconnected / never connected (GH-67).
  • Set default tty to vt100 for shell sessions.
  • Much improved TransferListener interface that supports immutable implementation, however as it is signfiicantly different any overridden impl will break.
  • GH-57: Fix for remote max packet size when greater than MAX_INT being treated as -1.
  • Avoid string concat in various logging statements.
  • sftpClient.mkdirs() will not attempt to create the rightmost child 2x if there was a trailing separator in path.
  • GH-72: Fix for infinite loop in buffer allocation.
  • GH-42: SFTPFileTransfer now has a preference for whether attributes should be preserved.

version 0.7.0

  • GH-41: OpenSSHKnownHosts re-implemented to better support the format seen in the wild, e.g. optional markers.
  • SocketClient made public so that SSHClient can be mocked for testing.
  • GH-37: Publish sources jar.
  • Fixed typo on SFTPClient.getFileTansfer()
  • Removed deprecated methods on Session.Command, getOutputAsString() and getErrorAsString().
  • Window adjustments were being logged incorrectly, fixed.
  • GH-47: Fix a condition where ChannelOutputStream writes or flushes may wrongly block sitting around waiting for window adjustments where none was required. Issue was observed with non-OpenSSH servers like dropbear and WinSSHD.
  • GH-50: Fix for using sshj in OSGi.
  • GH-26: Local port forwarding - there was no way to cleanly close the server socket.

version 0.6.1

  • GH-36: Race condition in AbstractChannel channel requests (0.6.0 regression).

version 0.6.0

  • GH-27: Fixed deadlock condition in AbstractChannel.
  • GH-28: StatefulSFTPClient doesn't cwdify all commands.
  • GH-31: Fixed bug in SFTP FileMode for AIX/Unix directory mask.
  • GH-34: The option to use an 'upload filter' is back in SCPUploadClient.

version 0.5.0

  • GH-20: In case of publickey authentication using a string rather than a file, prevent private key data from leaking in logs / on authentication exception.
  • GH-21: SessionChannel#changeWindowDimensions was broken
  • Prevent occasional spurious NPE when disconnecting at AbstractDirectChannel#notifyError.
  • SSHClient implements Closeable.
  • GH-22: OSGi-fication

version 0.4.1

  • GH-18: Intermittent key exchange failures.
  • GH-16: Support for publickey authentication from strings.

version 0.4.0

  • DisconnectListener callback.
  • FileTransfer interface refactored. Local source and destination paths can be any implementation of LocalSourceFile and LocalDestFile, respectively.
  • Bug in case of SCP remote path having spaces fixed.
  • Deprecated Command#getOutputAsString() and Command#getErrorAsString() -- recommend using IOUtils#pipeStream(..) instead.
  • StreamCopier interface updated, now uses builder pattern. start() to spawn, copy() to do it in current thread and block.
  • Possible to specify an alternate path separator (for Windows SFTP servers).
  • Several internal refactorings that make the library nicer...

version 0.3.1

  • stderr ChannelInputStream gets correctly notified of errors e.g. at the transport layer.
  • Added a channel.join(timeout) variant.
  • An alternate AndroidConfig to initialize SSHClient with on Android 2.3+ was added, which uses JCERandom instead of BouncyCastleRandom.
  • In SCP upload, detect when destination directory does not exist. This was previously detected as a warning (well, technically it is sent as one...) but should truly be an error. All SCP 'warnings' now treated as errors.
  • Bug with StatefulSFTPClient#put fixed - was doing a get instead of a put!
  • SessionChannel reuse now gets an explicit runtime error.

version 0.3.0

  • channel.close() method no longer called implicitly on disconnecting, because this is error prone. See updated examples.
  • Logging fix: enable filtering, previously due to misconfiguration this was hard to do.
  • Don't barf when a server sends more CHANNEL_DATA than announced. Now there is no exception in this case, but still only as much data as announced is consumed.
  • Client was still identifying as SSHJ_0_1 -- changed to SSHJ_0_3.
  • Support for SFTP versions less than 3.
  • Host based authentication - see net.schmizz.sshj.userauth.method.AuthHostbased; pass an instance to SSHClient.auth() to use.
  • Added Channel.join() to allow blocking on channel close event. Useful e.g. when waiting for a command to exit.
  • Various code cleanups.

version 0.2.3

  • In 0.2.0 DefaultModeGetter and DeaultModeSetter started throwing exception when permissions couldn't be retrieved/assigned, and this was problematic on windows so the exception has been replaced with a log message.

version 0.2.0

  • Now compiled with compiler source and target level = 6 -- JRE 6+ is required! Always was, just more explicit now.
  • New methods in SFTPClient: checking if a file/directory exists (statExistence() -- returns null on file not found); recursively create directories (mkdirs()).
  • Bug with SFTP directory listing being truncated fixed.
  • Timestamps and permissions are now preserved by default when transferring with SCP or SFTP. A bug which prevented even using the ModeGetter or ModeSetter interface for this purpose has been quashed.
  • keyboard-interactive authentication now supported. SSHClient#authPassword() attempts to use it as a fallback by default.
  • An interface has been introduced for observing progress of file transfers (TransferListener) which can be registered with any FileTransfer implementation (i.e. SCPFileTransfer; SFTPFileTransfer).
  • Various bugfixes and improvements.
Clone this wiki locally