Skip to content

v2.2.2

Choose a tag to compare

@inureyes inureyes released this 25 May 04:27
· 76 commits to main since this release

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-interval now sits below common one-minute idle reapers (load balancers, NAT gateways, and sshd's own ClientAliveInterval), so bssh sends keepalive traffic before any of them decide the connection is idle.
    • Normalize --server-alive-interval 0 to fully disabled keepalive. Passing 0 previously constructed a zero-duration russh timer. Some(0) is now treated exactly like None in both the russh client config and the TCP SO_KEEPALIVE path.
    • Never close idle interactive sessions locally. The client-side inactivity_timeout is 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.

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, and src/ssh/tokio_client/connection.rs, with expanded coverage in tests/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