blob: 1d897a05ca21abe3101a7b606299bcb0fdb15419 [file] [log] [blame]
Jean-Baptiste Querub56ea2a2013-01-08 11:11:20 -08001
2Release Notes:
3==============
4
5build213, 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
22build212, 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
36build211, 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
68build210, 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
141build209, 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
237build208, 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
304build207, 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
335build206, 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
344build205, 2005-06-27:
345
346- Initial release.
347