v2.2.2
This is a focused bug-fix release that stops bssh from dropping idle but healthy SSH sessions (#206). It is a drop-in upgrade from v2.2.1 with no configuration changes required.
New Features
None
Improvements
None
Bug Fixes
- Keep idle SSH sessions alive (#206). Three related changes now work together so an open SSH session is no longer closed while it is still healthy:
- Lower the default keepalive interval from 60s to 30s. The default
--server-alive-intervalnow sits below common one-minute idle reapers (load balancers, NAT gateways, and sshd's ownClientAliveInterval), so bssh sends keepalive traffic before any of them decide the connection is idle. - Normalize
--server-alive-interval 0to fully disabled keepalive. Passing0previously constructed a zero-duration russh timer.Some(0)is now treated exactly likeNonein both the russh client config and the TCPSO_KEEPALIVEpath. - Never close idle interactive sessions locally. The client-side
inactivity_timeoutis now disabled unconditionally, so a healthy session that legitimately produces no inbound data for a long time (tmux, an idle shell, a long-running REPL) is never torn down by bssh itself. When keepalive is enabled, russh's keepalive counter is the sole dead-peer detector.
- Lower the default keepalive interval from 60s to 30s. The default
CI/CD Improvements
None
Technical Details
- Dead-peer detection now resolves in about 120s (three unanswered 30s probes plus the next timer tick that observes them) rather than the previous 180s.
- Changes are confined to
src/cli/bssh.rs,src/config/types.rs, andsrc/ssh/tokio_client/connection.rs, with expanded coverage intests/ssh_keepalive_test.rs.
Dependencies
None
Breaking Changes
None. The default keepalive interval changed from 60s to 30s, but this only increases keepalive frequency and stays fully overridable via the --server-alive-interval flag and the server_alive_interval config field.
Known Issues
None
Full Changelog: v2.2.1...v2.2.2