You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Consolidates the v2.0.0-beta.1 pre-release entries into a single v2.0.0
stable entry across README, CHANGELOG, debian/changelog, and manpages.
Adds the post-beta fixes and dependency updates (SSH idle disconnect fix,
cluster flag help fix, bssh-russh 0.60 sync, rand 0.10 stable, cargo
dependency refresh).
-**Cluster flag help**: Help examples and man pages now correctly show `-C` (uppercase) for the cluster flag; running the previous `-c` examples failed with clap's "unexpected argument" error
55
+
56
+
### Fixed
57
+
-**SSH idle disconnects**: Interactive sessions could disconnect inconsistently after idle time — sometimes within minutes, sometimes ~10 minutes
58
+
-`russh::Config::inactivity_timeout` (10-minute client-side ceiling) is now explicitly set to `None` when keepalive is enabled so the keepalive mechanism alone decides peer liveness
59
+
- TCP-level `SO_KEEPALIVE` (via `socket2::TcpKeepalive`) is now applied to every SSH socket so the kernel can detect broken paths even when SSH keepalive replies are dropped by middleboxes
60
+
- The exec-mode code path previously dropped the user-configured `SshConnectionConfig` at the `ConnectionConfig` boundary; it now flows through `connect_direct` / `connect_via_jump_hosts` / the jump chain, so `server_alive_interval` actually takes effect in non-interactive runs
61
+
-**bssh-server**: Use consistent source package name in Debian `control` file so dual-package builds resolve correctly
62
+
-**bssh-server**: Use type inference for `ioctl` to support both glibc and musl builds
53
63
54
64
### Technical Details
55
65
- Shared module structure for client/server code reuse
56
66
- russh-based SSH server handler implementation
57
67
- Modular audit exporter architecture with trait-based design
68
+
-`SshConnectionConfig::to_russh_config()` now overrides `inactivity_timeout` based on keepalive state; `to_tcp_keepalive()` derives a kernel TCP keepalive config from the same settings
69
+
-`Client::connect_with_config` rewritten around `russh::client::connect_stream`, building the `TcpStream` manually so SO_KEEPALIVE can be applied before the SSH handshake
70
+
- Dropped the `ssh_key::rand_core::OsRng` workaround in key-generation sites; now pass `&mut rand::rng()` (rand 0.10's thread RNG implements the new `rand_core 0.10``CryptoRng` trait directly)
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1445,7 +1445,7 @@ See the [LICENSE](./LICENSE) file for details.
1445
1445
## Changelog
1446
1446
1447
1447
### Recent Updates
1448
-
-**v2.0.0-beta.1 (2026/01/29):**Add bssh-server SSH server for containers with SFTP/SCP support, audit logging (file/OpenTelemetry/Logstash), IP access control, rate limiting, session management, file transfer filtering, and bssh-keygen tool; separate packaging for bssh and bssh-server
1448
+
-**v2.0.0 (2026/04/13):**Major release — bssh-server SSH server for containers with SFTP/SCP, PTY/shell sessions, password + public-key auth; audit logging (file/OpenTelemetry/Logstash); IP access control, rate limiting, session management, file transfer filtering; bssh-keygen tool; SSH idle-disconnect fix via proper keepalive wiring (inactivity_timeout override + TCP SO_KEEPALIVE); bssh-russh fork synced with upstream russh 0.60.0 (rand 0.10 stable, updated RustCrypto chain); separate packaging for bssh and bssh-server
1449
1449
-**v1.7.0 (2026/01/09):** Add SSH keepalive support with --server-alive-interval and --server-alive-count-max options to prevent idle connection timeouts (#122), update dependencies (russh 0.56, ratatui 0.30, whoami 2.0)
1450
1450
-**v1.6.0 (2025/12/19):** Add jump_host field support in config.yaml (issue #115), fix SSH config ProxyJump directive application, fix jump host authentication with empty SSH agent (issues #116, #117)
1451
1451
-**v1.5.1 (2025/12/18):** Fix SSH disconnect error handling during authentication for password fallback (issue #113)
- Added comprehensive server configuration manual and manpages
32
32
- Shared module structure for client/server code reuse
33
+
- Help examples and man pages now correctly use -C (uppercase) for the cluster flag
33
34
34
35
### Bug Fixes
35
-
None
36
+
- Fix inconsistent SSH idle disconnects: override russh's 10-minute inactivity_timeout when keepalive is enabled, enable TCP SO_KEEPALIVE on the socket via socket2, and wire user-configured server_alive_interval through the exec-mode code path (previously dropped at the ConnectionConfig boundary)
37
+
- Use consistent source package name in bssh-server Debian control file
38
+
- Use type inference for ioctl to support both glibc and musl builds in bssh-server
36
39
37
40
### CI/CD Improvements
38
41
- Updated release workflow for dual-package distribution
39
42
- Separate Debian packages for client and server
40
43
- Separate Homebrew formulas for each component
44
+
- Added Teams release notification
45
+
- Updated non-LTS Ubuntu target from 25.04 plucky to 25.10 questing
41
46
42
47
### Technical Details
43
48
- russh-based SSH server handler implementation
44
49
- Modular audit exporter architecture with trait-based design
0 commit comments