Jean-Baptiste Queru | b56ea2a | 2013-01-08 11:11:20 -0800 | [diff] [blame] | 1 | |
| 2 | Release Notes: |
| 3 | ============== |
| 4 | |
| 5 | build213, 2008-04-01: |
| 6 | |
| 7 | - Added a workaround for servers that violate RFC4253 when sending the |
| 8 | SSH_MSG_SERVICE_ACCEPT and the SSH_MSG_KEXDH_REPLY messages. |
| 9 | Thanks to Gordon Brockway. |
| 10 | |
| 11 | - Fixed encodings for alien platforms (e.g., EBCDIC based). Use "ISO-8859-1" in |
| 12 | most places where we used the default platform encoding so far. |
| 13 | |
| 14 | - API change: atime and mtime attributes in SFTPv3FileAttributes are now |
| 15 | of type Long (not Integer). Makes it easier to properly handle values > 2^31. |
| 16 | |
| 17 | - Fixed the blowfish-ctr cipher, it could not be instantiated (a typo that |
| 18 | got in during the move to the trilead namespace). Thanks to Roelof Kemp. |
| 19 | |
| 20 | - Still in the queue: SSH server support. |
| 21 | |
| 22 | build212, 2008-03-03: |
| 23 | |
| 24 | - Added possibility to enable debugging output without recompiling the library. |
| 25 | See the Connection.enableDebugging(...) method and the DebugLogger interface. |
| 26 | |
| 27 | - Added Connection.ping() and Session.ping() methods to perform end-to-end |
| 28 | connection/session testing. Initial code supplied by Alexander Kitaev. Thanks! |
| 29 | |
| 30 | - Some buggy SFTP servers send too big packets when we instruct them to read |
| 31 | directory entries. Therefore, increased the packet size limit for answers |
| 32 | to the SSH_FXP_READDIR request. Thanks to Ross Perry. |
| 33 | |
| 34 | - Coming soon: SSH server support. |
| 35 | |
| 36 | build211, 2007-10-28: |
| 37 | |
| 38 | - The library is now called "Trilead SSH-2 for Java". |
| 39 | It is still maintained by Christian Plattner (co-founder of Trilead). |
| 40 | |
| 41 | - The package has been moved to "com.trilead.ssh2". Therefore, please make sure |
| 42 | that you use "import com.trilead.ssh2.*" in your Java source files. |
| 43 | Otherwise, the library is completely backwards compatible. |
| 44 | |
| 45 | - If you have questions, then please consult our new forum at http://www.trilead.com/support. |
| 46 | |
| 47 | - Added Connection.sendIgnorePacket(...) methods which allow to send SSH_MSG_IGNORE packets. |
| 48 | Thanks to Andrei Tchijov. |
| 49 | |
| 50 | - Added support for the "none" authentication method. |
| 51 | |
| 52 | - Revised the SHA-1 code. Highly optimized. Speed should be more than doubled. |
| 53 | |
| 54 | - Changed references to the correct RFCs (instead of the drafts) in the javadocs (where possible). |
| 55 | |
| 56 | - Fixed the write() method in the SFTP code. Unsatisfiable preconditions stopped the method |
| 57 | from writing any bytes. As stated in the documentation, the SFTP code is still experimental. |
| 58 | Thanks to Andreas Pueschel. |
| 59 | |
| 60 | - The "softwareversion" token for the SSH protocol version exchange has been changed |
| 61 | to "TrileadSSH2Java_XXX", where XXX is the build number. |
| 62 | |
| 63 | - Added a new createLocalPortForwarder(InetSocketAddress addr, ...) method which allows to |
| 64 | specify the local address and port to bind to. Thanks to Andrei Tchijov. |
| 65 | |
| 66 | - Slightly updated the FAQ. |
| 67 | |
| 68 | build210, 2006-10-06: |
| 69 | |
| 70 | - Added HTTP proxy support. See Connection.setProxyData() and the HTTPProxyData class. |
| 71 | Thanks to Jean-Pierre Schmit for providing example code. |
| 72 | |
| 73 | - Added basic support for SFTP (v3). |
| 74 | |
| 75 | - Beta users: removed support for automatic split of huge read transfers in SFTP, |
| 76 | as it was not possible to return EOF in a clean way. The write method still splits huge |
| 77 | transfers (in blocks of 32768 bytes). Thanks to Zhong Li. |
| 78 | |
| 79 | - SCP enhancement. It is now possible to specify an empty target directory name when sending |
| 80 | files. This is analogous to using "scp file user@host:" (thanks to Bernd Eggink). |
| 81 | |
| 82 | - SCP enhancement. It is now possible to receive a remote file and pipe it directly into |
| 83 | an OutputStream. Thanks to Bernd Eggink. |
| 84 | |
| 85 | - SCP enhancement. It is now possible to specify a different remote filename when sending |
| 86 | a file. Thanks to Thomas Tatzel. |
| 87 | |
| 88 | - Added more verbose error messages in case a channel open operation fails (e.g., resource |
| 89 | shortage on the server). Related to this, added a comment to the FAQ regarding the limitation |
| 90 | on the number of concurrent sessions per connection in OpenSSH. Thanks to Ron Warshawsky. |
| 91 | |
| 92 | - Added a feature (ConnectionMonitor) to get notified when a connection breaks. |
| 93 | Thanks to Daniel Ritz (Alcatel). |
| 94 | |
| 95 | - It is now possible to override the used SecureRandom instance (Connection.setSecureRandom()). |
| 96 | |
| 97 | - Added getters for the server's hostname and port to the Connection class. |
| 98 | |
| 99 | - Added examples for HTTP proxy usage as well as local/remote port forwarding. |
| 100 | |
| 101 | - Added support for SSH_MSG_KEX_DH_GEX_REQUEST_OLD in the DHGexParameters class (there |
| 102 | is a new, additional constructor). Please check the Javadoc for DHGexParameters. |
| 103 | |
| 104 | - Clarified in the javadoc the issue of re-using Connection objects. Changed the exception |
| 105 | message in case connect() is invoked on an already connected connection. |
| 106 | |
| 107 | - Added an entry to the FAQ regarding pumping data into remote files. |
| 108 | Thanks to Daniel Schwager. |
| 109 | |
| 110 | - Changed JDialog.show() to JDialog.setVisible(true) in the SwingShell example. |
| 111 | The show() method is deprecated in Java 5.0. Thanks to Carlo Dapor. |
| 112 | |
| 113 | - Fixed the behavior of the local port forwarder code. Trying to listen on an already bound port |
| 114 | will not fail silently anymore. Also, the accept thread will continue accepting connections |
| 115 | even if there was a problem with the establishment of the underlying ssh-forwarding of a |
| 116 | previous incoming connection (e.g., one tried to establish a forwarding to a remote port that |
| 117 | is not in state open (yet)). Thanks to Claudio Nieder (Inodes, Switzerland) and |
| 118 | Daniel Ritz (Alcatel) for pointing this out. |
| 119 | Note: the interface for managing port forwardings needs to be further improved. |
| 120 | |
| 121 | - Tried to implement a workaround for the Sun JVM bug 5092063. Changed InetAddress.getByAddress(byte[]) |
| 122 | in the "TransportManager.parseIPv4Address" method (which already is a workaround for JDK's that |
| 123 | use the resolver for dotted IP addresses, independently from the 5092063 bug) to |
| 124 | InetAddress.getByAddress(String, byte[]). Thanks to Alain Philipin. |
| 125 | |
| 126 | - Fixed a bug in KnownHosts.addHostkeyToFile. Hostnames were converted to lowercase which is |
| 127 | not good in case of hashed hostnames (it leads to a different BASE64 encoding and therefore |
| 128 | hashes won't match). Thanks to [unknown]. |
| 129 | |
| 130 | - Fixed a typo in the SCP client (tag for modification times is 'T' and not 'P'). |
| 131 | Thanks to Andreas Sahlbach. |
| 132 | |
| 133 | - Stupid performance enhancement in the Logger, it did unnecessary calls to System.currentTimeMillis(). |
| 134 | |
| 135 | - The LICENCE.txt file is now also included in the pre-compiled jar. Of course, redistributions in |
| 136 | binary form must *still* include the contents of LICENCE.txt in the documentation and/or other |
| 137 | materials provided with the distribution. |
| 138 | |
| 139 | - Small cleanups in the TransportManager code. |
| 140 | |
| 141 | build209, 2006-02-14: |
| 142 | |
| 143 | - A major release, many new features. Thanks to all who supported me with feedback! |
| 144 | |
| 145 | - Added remote port forwarding support. |
| 146 | Please consult the docs for Connection.requestRemotePortForwarding(). |
| 147 | |
| 148 | - Added X11 forwarding support. Please consult Session.requestX11Forwarding(). |
| 149 | X11 support is based on joint work with Simon Hartl (simon.hartl (at) gmx.net). Thanks, Simon! |
| 150 | |
| 151 | - The SCPClient constructor is now public. The factory method is still there (in the Connection |
| 152 | class), however, it will probably be marked as deprecated and eventually be removed in the future. |
| 153 | |
| 154 | - Added startSubSystem() method to the Session class. Now it is possible to implement subsystems, |
| 155 | e.g., sftp, outside of the library. |
| 156 | |
| 157 | - For advanced users: there is now a much better condition wait interface in the Session class. |
| 158 | It is now also possible to wait for the arrival of "exit-status" and "exit-signal". |
| 159 | The Session.waitUntilDataAvailable() method still works, but is marked as deprecated. |
| 160 | |
| 161 | Users that used the beta version, please be aware of the following change: calling the close() |
| 162 | method on a Session object will immediatelly raise the ChannelCondition.CLOSED/EOF conditions |
| 163 | on the underlying channel - even though the remote side may not have yet responded with a |
| 164 | SSH_MSG_CHANNEL_CLOSE message (however, in the background the library still expects the server |
| 165 | to send the SSH_MSG_CHANNEL_CLOSE message). See below for an explanation. |
| 166 | |
| 167 | - The behavior of Session.close() has changed. If you *kill* a Session (i.e., call Session.close() |
| 168 | before EOF (or CLOSE) has been sent by the remote side), then immediatelly EOF will (locally) |
| 169 | be raised for both stdout and stderr. Further incoming data (for that particular Session) will |
| 170 | be ignored. However, remote data that arrived before we sent our SSH_MSG_CHANNEL_CLOSE message |
| 171 | is still available (you can think of having appended the EOF marker to the end of the local |
| 172 | incoming stdout and stderr queues). |
| 173 | |
| 174 | The reason to do this is simply because some SSH servers do sometimes not reply to our |
| 175 | SSH_MSG_CHANNEL_CLOSE message (event though they should). As a consequence, a local reader may |
| 176 | wait forever for the remote SSH_MSG_CHANNEL_EOF or SSH_MSG_CHANNEL_CLOSE messages to arrive. |
| 177 | If you are interested, then you can try to reproduce the problem: Execute something like |
| 178 | "tail -f /dev/null" (which should do nothing forever) and then concurrently close the Session |
| 179 | (enable debug mode to see the SSH packets on the wire) to check how standard compliant your server |
| 180 | implementation is). Thanks to Cristiano Sadun. |
| 181 | |
| 182 | - The Session code does not anymore make use of the synchronized attribute for any of its methods. |
| 183 | This has the advantage that a call to Session.close() will never by blocked by concurrent |
| 184 | calls to the Session object. However, note that in the worst case the call may still block until |
| 185 | we can send our SSH_MSG_CHANNEL_CLOSE over the TCP connection. |
| 186 | |
| 187 | - The SCP client can now also be used to directly inject the contents of a given byte array |
| 188 | into a remote file (thanks to Dieter Baier for suggesting this). |
| 189 | |
| 190 | - Added support for specifying timeouts for connection establishment. |
| 191 | Thanks to Rob Hasselbaum and Ben XYZ. |
| 192 | |
| 193 | - Performance improvement: we use only a single SecureRandom object per connection |
| 194 | (until now there were multiple instances). |
| 195 | |
| 196 | - Fixed the Swingshell example program, it did not read in the known_hosts file on startup. |
| 197 | (thanks to Ashwani Kumar). |
| 198 | |
| 199 | - There was a typo in the CBCMode class (srcoff was ignored), however since we always pass |
| 200 | a zero offset the bug did not show up (thanks to Alex Pakhomov). |
| 201 | |
| 202 | - While implementing X11 support, found a strange X11 bug in OpenSSH (reported, openssh bug 1076). |
| 203 | 12.10.2005: has been fixed for OpenSSH 4.3 by the OpenSSH crowd. |
| 204 | |
| 205 | - Changed the SingleThreadStdoutStderr example so that it uses the new condition wait interface. |
| 206 | |
| 207 | - Efficiently handle IPv4 addresses (when creating the underlying socket), there was a report |
| 208 | that some JDK's try to lookup dotted addresses with the resolver. |
| 209 | (thanks to Alexander Kitaev). |
| 210 | |
| 211 | - Added setTCPNoDelay() method to the Connection class. |
| 212 | |
| 213 | - Improved handling of unsupported global/channel requests received from the server. |
| 214 | |
| 215 | - The KEX code is now more robust. Also, the ServerHostKeyVerifier callback (if specified) will be called |
| 216 | before doing any DH calculation. |
| 217 | |
| 218 | - Major cleanup (i.e., rewrite) of the SSH channel code. |
| 219 | |
| 220 | - Cleanup up Session class, removed unnecessary IOExceptions. |
| 221 | |
| 222 | - Implemented 2^32-1 conformance for channel windows. |
| 223 | |
| 224 | - I got several times questions by e-mail from people that have problems with "putty" keys. |
| 225 | Added an entry to the FAQ. |
| 226 | |
| 227 | - Added an entry to the FAQ regarding how to handle servers with disabled password authentication |
| 228 | (thanks to Nicolas Raoul). |
| 229 | |
| 230 | - Upcoming: SFTP support (in the meantime almost a running gag). |
| 231 | |
| 232 | - Changed the name from "Ganymed SSH2" to "Ganymed SSH-2". Will this improve the G**gle ranking? =) |
| 233 | |
| 234 | - Latest javadoc is now also online. |
| 235 | |
| 236 | |
| 237 | build208, 2005-08-24: |
| 238 | |
| 239 | - Added support for RSA private keys (PEM format), also revised code for RSA signature verification. |
| 240 | |
| 241 | - Extended support for encrypted PEM files. |
| 242 | Supported encryptions: DES-CBC, DES-EDE3-CBC, AES-128-CBC, AES-192-CBC and AES-256-CBC. |
| 243 | |
| 244 | - Added rather complete support for known_hosts files (in KnownHosts.java). |
| 245 | The parser is able to understand the same pseudo-regex (*,?,!) syntax as OpenSSH clients. |
| 246 | The class includes support for hostkey comparison as well as functionality to add accepted keys |
| 247 | to a known_hosts file. One can also create OpenSSH compatible fingerprints (Hex and Bubblebabble). |
| 248 | Hashed hostname entries are understood and can also be generated. |
| 249 | |
| 250 | - Restructured the examples section, added more examples. The examples should cover most issues. |
| 251 | There is also a _very_ basic terminal emulator, see SwingShell.java. |
| 252 | |
| 253 | - It is now possible to override the default server hostkey algorithm order (for the key exchange) |
| 254 | with the Connection.setServerHostKeyAlgorithms method. This makes sense in combination with |
| 255 | known_hosts support (e.g., if you already know the server's public ssh-dss key, then |
| 256 | you probably prefer the "ssh-dss" over the "ssh-rsa" algorithm). |
| 257 | The used server hostkey algorithm is now also reflected in ConnectionInfo. |
| 258 | |
| 259 | - The default server hostkey algorithm order is now "ssh-rsa", "ssh-dss". |
| 260 | |
| 261 | - Important: revised Input- and OutputStream code, everything is now unbuffered |
| 262 | (less memory consumption, more direct interface, see also StreamGobbler class and the FAQ). |
| 263 | |
| 264 | - Added StreamGobbler helper class. |
| 265 | |
| 266 | - Method verifyServerHostKey() in the ServerHostKeyVerifier may now throw exceptions |
| 267 | (an alternative to returning "false"). |
| 268 | |
| 269 | - All background threads (the per-connection receive thread as well as all threads |
| 270 | used in forwarders and StreamGobblers) now use setDaemon(true) on startup. |
| 271 | |
| 272 | - Added "diffie-hellman-group14-sha1" support to the key exchange code. |
| 273 | |
| 274 | - Added chained IOExceptions where applicable (IOException initialization with initCause()). |
| 275 | |
| 276 | - Cleaned up packet building code, removed unnecessary server-side methods. |
| 277 | |
| 278 | - Cleaned up javadoc of SCPClient: replaced umask with mode. |
| 279 | |
| 280 | - Fixed a bug in the server identification string parser. This actually prevented a successful |
| 281 | key exchange with some ssh servers (the server's signature was rejected). |
| 282 | Thanks to Alex Molochnikov for the initial bug report and for helping in tracking down the issue. |
| 283 | |
| 284 | - Fixed a buffer re-allocation bug in the beta version of the StreamGobbler class |
| 285 | (thanks to Marc Lijour). |
| 286 | |
| 287 | - Fixed flawed UINT64 support (thanks to Bob Simons). |
| 288 | |
| 289 | - Fixed a bug in the build script of the beta builds (sftp beta directory was not completely removed) |
| 290 | (thanks to Richard Hash). |
| 291 | |
| 292 | - Use zero based padding for unencrypted traffic. |
| 293 | |
| 294 | - Changed again the client identification string (the one presented to the server). |
| 295 | |
| 296 | - Created a FAQ, available on the website and in the distribution. |
| 297 | |
| 298 | - Revised javadoc comments. Also, the generated documentation is now located in the subdirectory |
| 299 | "javadoc" instead of "doc" (in the distribution). |
| 300 | |
| 301 | - Added README.txt to the distribution. |
| 302 | |
| 303 | |
| 304 | build207, 2005-07-21: |
| 305 | |
| 306 | - Added "Keyboard Interactive" authentication method: |
| 307 | authenticateWithKeyboardInteractive() in Connection.java, |
| 308 | also have a look at InteractiveCallback.java. |
| 309 | |
| 310 | - Extended authentication interface in Connection.java (backwards compatible). |
| 311 | New functionality: getRemainingAuthMethods(), isAuthMethodAvailable(), |
| 312 | isAuthenticationComplete() and isAuthenticationPartialSuccess(). |
| 313 | |
| 314 | - Using an authentication method not supported by the server leads now to an exception |
| 315 | (instead of returning "false"). Use isAuthMethodAvailable() if you want to check |
| 316 | for the availability of an authentication method. |
| 317 | |
| 318 | - Fixed a bug in SCPClient which sometimes lead to failed downloads. |
| 319 | |
| 320 | - Improved channel window handling. |
| 321 | |
| 322 | - Removed bogus (CVS) version string from Connection.java |
| 323 | |
| 324 | - Changed client identification string to "Ganymed_buildXXX". |
| 325 | |
| 326 | - Changed the jar file naming scheme (ganymed-ssh2-buildXXX.jar). |
| 327 | |
| 328 | - Started adding logging support for debugging purposes (currently only for development). |
| 329 | |
| 330 | - Cleanup of javadoc and comments at several places. |
| 331 | |
| 332 | - Reversed order of entries in HISTORY.TXT |
| 333 | |
| 334 | |
| 335 | build206, 2005-07-04: |
| 336 | |
| 337 | - Fixed small resource issue with SCP (thanks to Michaƫl Giraud). |
| 338 | |
| 339 | - Added LocalStreamForwarder. |
| 340 | |
| 341 | - Added HISTORY.TXT |
| 342 | |
| 343 | |
| 344 | build205, 2005-06-27: |
| 345 | |
| 346 | - Initial release. |
| 347 | |