This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mina-sshd.git
The following commit(s) were added to refs/heads/master by this push: new 93250df5b Prepare changelog for release 93250df5b is described below commit 93250df5bcb89cb9f5ca12bf2248283480ac30b0 Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Tue Jun 11 22:46:55 2024 +0200 Prepare changelog for release --- CHANGES.md | 153 +---------------------------------- CHANGES.md => docs/changes/2.13.0.md | 32 +------- 2 files changed, 3 insertions(+), 182 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index e6e60e08e..a22da481e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -28,164 +28,15 @@ # [Version 2.12.0 to 2.12.1](./docs/changes/2.12.1.md) +# [Version 2.12.1 to 2.13.0](./docs/changes/2.13.0.md) + # Planned for next version ## Bug Fixes -* [GH-318](https://github.com/apache/mina-sshd/issues/318) Handle cascaded proxy jumps -* [GH-427](https://github.com/apache/mina-sshd/issues/427) SCP client: fix `DefaultScpClient.upload(InputStream, ...)` -* [GH-455](https://github.com/apache/mina-sshd/issues/455) Fix `BaseCipher`: make sure all bytes are processed -* [GH-461](https://github.com/apache/mina-sshd/issues/461) Fix heartbeats with `wantReply=true` -* [GH-470](https://github.com/apache/mina-sshd/issues/470) MontgomeryCurve: synchronize access to KeyPairGenerator -* [GH-489](https://github.com/apache/mina-sshd/issues/489) SFTP v3 client: better file type determination -* [GH-493](https://github.com/apache/mina-sshd/issues/493) Fix arcfour128 and arcfour256 ciphers (regression in 2.2.0) -* [GH-500](https://github.com/apache/mina-sshd/issues/500) SFTP file system: fix memory leak on exceptions -* [GH-504](https://github.com/apache/mina-sshd/issues/504) Pass through failure exception to `SessionListener.sessionNegotiationEnd()` -* [GH-509](https://github.com/apache/mina-sshd/issues/509) SFTP v[456] client: validate attribute flags -* [GH-510](https://github.com/apache/mina-sshd/issues/510) Fix class name in BuiltinIoServiceFactoryFactories (regression in 2.6.0) - -* [PR-472](https://github.com/apache/mina-sshd/pull/472) sshd-spring-sftp: fix client start -* [PR-476](https://github.com/apache/mina-sshd/pull/476) Fix Android detection -* [PR-486](https://github.com/apache/mina-sshd/pull/486) Add missing `equals` and `hashCode` to U2F key classes - - -* [SSHD-1237](https://issues.apache.org/jira/browse/SSHD-1237) Handle keep-alive _channel_ requests - ## New Features -### `sntrup761x25519-sha...@openssh.com` Key Exchange - -The key exchange method sntrup761x25519-sha...@openssh.com is now available if the Bouncy Castle library is available. - -This uses a post-quantum key encapsulation method (KEM) to make key exchange future-proof against quantum attacks. -More information can be found in IETF Memo [Secure Shell (SSH) Key Exchange Method Using Hybrid Streamlined NTRU Prime sntrup761 and X25519 with SHA-512: sntrup761x25519-sha512](https://www.ietf.org/archive/id/draft-josefsson-ntruprime-ssh-02.html). - - -## Behavioral changes and enhancements - -### [GH-318](https://github.com/apache/mina-sshd/issues/318) Handle cascaded proxy jumps - -Proxy jumps can be configured via host configuration entries in two ways. First, proxies can be _chained_ -directly by specifiying several proxies in one `ProxyJump` directive: - -``` -Host target -Hostname somewhere.example.org -User some_user -IdentityFile ~/.ssh/some_id -ProxyJump jumphost2, jumphost1 - -Host jumphost1 -Hostname jumpho...@example.org -User jumphost1_user -IdentityFile ~/.ssh/id_jumphost1 - -Host jumphost2 -Hostname jumpho...@example.org -User jumphost2_user -IdentityFile ~/.ssh/id_jumphost2 -``` - -Connecting to server `target` will first connect to `jumphost1`, then tunnel through to `jumphost2`, and finally -tunnel to `target`. So the full connection will be `client`→`jumphost1`→`jumphost2`→`target`. - -Such proxy jump chains were already supported in Apache MINA SSHD. - -Newly, Apache MINA SSHD also supports _cascading_ proxy jumps, so a configuration like - -``` -Host target -Hostname somewhere.example.org -User some_user -IdentityFile ~/.ssh/some_id -ProxyJump jumphost2 - -Host jumphost1 -Hostname jumpho...@example.org -User jumphost1_user -IdentityFile ~/.ssh/id_jumphost1 - -Host jumphost2 -Hostname jumpho...@example.org -ProxyJump jumphost1 -User jumphost2_user -IdentityFile ~/.ssh/id_jumphost2 -``` - -also works now, and produces the same connection `client`→`jumphost1`→`jumphost2`→`target`. - -It is possible to mis-configure such proxy jump cascades to have loops. (For instance, if host `jumphost1` in -the above example had a `ProxyJump jumphost2` directive.) To catch such misconfigurations, Apache MINA SSHD -imposes an upper limit on the total number of proxy jumps in a connection. An exception is thrown if there -are more than `CoreModuleProperties.MAX_PROXY_JUMPS` proxy jumps in a connection. The default value of this -property is 10. Most real uses of proxy jumps will have one or maybe two proxy jumps only. - -### [GH-461](https://github.com/apache/mina-sshd/issues/461) Fix heartbeats with `wantReply=true` - -The client-side heartbeat mechanism has been updated. Such heartbeats are configured via the -`CoreModuleProperties.HEARTBEAT_INTERVAL` property. If this interval is > 0, heartbeats are sent to -the server. - -Previously these heartbeats could also be configured with a `CoreModuleProperties.HEARTBEAT_REPLY_WAIT` -timeout. If the timeout was <= 0, the client would just send heartbeat requests without expecting any -answers. If the timeout was > 0, the client would send requests with a flag indicating that the server -should reply. The client would then wait for the specified duration for the reply and would terminate -the connection if none was received. - -This mechanism could cause trouble if the timeout was fairly long and the server was slow to respond. -A timeout longer than the interval could also delay subsequent heartbeats. - -The `CoreModuleProperties.HEARTBEAT_REPLY_WAIT` property is now _deprecated_. - -There is a new configuration property `CoreModuleProperties.HEARTBEAT_NO_REPLY_MAX` instead. It defines a -limit for the number of heartbeats sent without receiving a reply before a session is terminated. If -the value is <= 0, the client still sends heartbeats without expecting any reply. If the value is > 0, -the client will request a reply from the server for each heartbeat message, and it will -terminate the connection if the number of unanswered heartbeats reaches -`CoreModuleProperties.HEARTBEAT_NO_REPLY_MAX`. - -This new way to configure heartbeats aligns with the OpenSSH configuration options -`ServerAliveInterval` and `ServerAliveCountMax`. - -For compatibility with older configurations that explicitly define `CoreModuleProperties.HEARTBEAT_REPLY_WAIT`, -the new code maps this to the new configuration (but only if `CoreModuleProperties.HEARTBEAT_INTERVAL` > 0 -and the new property `CoreModuleProperties.HEARTBEAT_NO_REPLY_MAX` has _not_ been set) by setting -`CoreModuleProperties.HEARTBEAT_NO_REPLY_MAX` to -* `CoreModuleProperties.HEARTBEAT_REPLY_WAIT` <= 0: `CoreModuleProperties.HEARTBEAT_NO_REPLY_MAX = 0` -* otherwise: `(CoreModuleProperties.HEARTBEAT_REPLY_WAIT / CoreModuleProperties.HEARTBEAT_INTERVAL) + 1`. - -### [GH-468](https://github.com/apache/mina-sshd/issues/468) SFTP: validate length of data received: must not be more than requested - -SFTP read operations now check the amount of data they get back. If it's more than -requested an exception is thrown. SFTP servers must never return more data than the -client requested, but it appears that there are some that do so. If property -`SftpModuleProperties.TOLERATE_EXCESS_DATA` is set to `true`, a warning is logged and -such excess data is silently discarded. - ## Potential compatibility issues -### AES-CBC ciphers removed from server's defaults - -The AES-CBC ciphers `aes128-cbc`, `aes192-cbc`, and `aes256-cbc` have been removed from the default -list of cipher algorithms that a server proposes in the key exchange. OpenSSH has removed these -cipher algorithms from the server proposal in 2014, and has removed them from the client proposal -in 2017. - -The cipher implementations still exist but they are not enabled by default. Existing code that -explicitly sets the cipher factories is unaffected. Code that relies on the default settings -will newly create a server that does not support the CBC-mode ciphers. To enable the CBC-mode -ciphers, one can use for instance - -``` -SshServer server = ServerBuilder.builder() - ... - .cipherFactories(BuiltinFactory.setUpFactories(false, BaseBuilder.DEFAULT_CIPHERS_PREFERENCES)); - ... - .build(); -``` - -For the SSH _client_, the CBC ciphers are still enabled by default to facilitate connecting to -legacy servers. We plan to remove the CBC ciphers from the client's defaults in the next release. - ## Major Code Re-factoring diff --git a/CHANGES.md b/docs/changes/2.13.0.md similarity index 90% copy from CHANGES.md copy to docs/changes/2.13.0.md index e6e60e08e..b7996215c 100644 --- a/CHANGES.md +++ b/docs/changes/2.13.0.md @@ -1,34 +1,4 @@ -# [Version 2.1.0 to 2.2.0](./docs/changes/2.2.0.md) - -# [Version 2.2.0 to 2.3.0](./docs/changes/2.3.0.md) - -# [Version 2.3.0 to 2.4.0](./docs/changes/2.4.0.md) - -# [Version 2.4.0 to 2.5.0](./docs/changes/2.5.0.md) - -# [Version 2.5.0 to 2.5.1](./docs/changes/2.5.1.md) - -# [Version 2.5.1 to 2.6.0](./docs/changes/2.6.0.md) - -# [Version 2.6.0 to 2.7.0](./docs/changes/2.7.0.md) - -# [Version 2.7.0 to 2.8.0](./docs/changes/2.8.0.md) - -# [Version 2.8.0 to 2.9.0](./docs/changes/2.9.0.md) - -# [Version 2.9.0 to 2.9.1](./docs/changes/2.9.1.md) - -# [Version 2.9.1 to 2.9.2](./docs/changes/2.9.2.md) - -# [Version 2.9.2 to 2.10.0](./docs/changes/2.10.0.md) - -# [Version 2.10.0 to 2.11.0](./docs/changes/2.11.0.md) - -# [Version 2.11.0 to 2.12.0](./docs/changes/2.12.0.md) - -# [Version 2.12.0 to 2.12.1](./docs/changes/2.12.1.md) - -# Planned for next version +# Introduced in 2.13.0 ## Bug Fixes