Repository navigation
Changes since v3.0.1.
New Features
- Added FIDO security-key authentication through OpenSSH sk-api libraries and a built-in USB HID provider on Linux and macOS, including CTAP 2.1 sensor verification (#333, #334, #346).
- Added
bssh-keygenenrollment fored25519-skandecdsa-skand resident credential download with-K(#347). - Added
network-ping/npingfor direct IPv4/IPv6 ICMP checks with per-host packet loss, latency statistics and aggregate exit status (#324). - Added validated host certificates with CA trust, principal, validity, signature-algorithm and revocation checks, including
KnownHostsCommandCA sources (#329, #332). - Added Unix-domain socket forwarding and remote dynamic SOCKS forwarding with
PermitRemoteOpenrestrictions (#325, #329).
Improvements
- Enabled macOS
UseKeychainpassphrase lookup and storage while preserving batch-mode and authentication timeout policy (#316). - Improved ProxyJump resolution, SSH percent-token expansion, control commands, background detachment and cancellation-safe SCP input (#325).
- Removed unnecessary client connection delays that added about 0.6 seconds per connection (#329).
Bug Fixes
- Fixed SFTP upload disconnects when requests arrived faster than storage by applying backpressure and bounding queued requests (#321).
- Restricted substituted
ProxyCommandendpoint values to prevent shell injection through host, user and alias data (#342). - Hardened
Match execandLocalCommandtoken handling and bounded SOCKS negotiation (#325). - Fixed host-certificate trust gaps, multi-file revocation handling and Unix-socket publication races (#332).
- Enforced the negotiated host-key algorithm when accepting a server key or certificate (#333).
- Rejected server security-key authorization policies whose touch or user-verification requirements cannot be enforced (#343).
CI/CD Improvements
- Updated the declared MSRV and Debian/Launchpad build toolchain to Rust 1.97 (#341).
- Serialized HOME-sensitive tests and added a repeatable race-test runner (#344).
Technical Details
- Moved pipelined SFTP client transfers and server read-ahead into bssh using upstream public APIs (#320).
- Raised measured OpenSSH regression results to 69/70 on Ubuntu and 66/67 on macOS in the security-key support validation; destination-constrained agent authentication remained incomplete (#333).
Dependencies
- Replaced the internal SSH and SFTP forks with upstream
russh0.64.1 andrussh-sftp3.0.1 (#317, #318, #320). - Added HID transport, provider loading and cryptographic dependencies for FIDO signing and enrollment (#333, #334, #347).
Breaking Changes
- Raised the minimum supported Rust version from 1.96 to 1.97 (#341).
- Rejected substituted
ProxyCommandvalues containing whitespace, shell syntax, non-ASCII characters, scoped IPv6 or a leading hyphen; ordinary aliases and normalized IPv6 remained supported (#342). - Replaced the warn-and-TOFU handling of
@cert-authoritywith certificate validation and removedBSSH_CERT_AUTHORITY_POLICY(#329). - Required the first matching server
authorized_keysentry for a security key to specifyno-touch-requiredwithoutverify-requireduntil signature flags can be enforced (#343).
Known Issues
- Destination-constrained agent authentication remained blocked on upstream session-binding support (#327).
- WebAuthn security-key host signatures remained unsupported (#345).
- Physical-authenticator validation remained pending on Linux and macOS (#334, #348).
- Built-in resident enrollment required a PIN and credential management;
write-attestationremained unsupported and serialized key handles were limited to 255 bytes (#347). - Native OpenSSH mux-v4 interoperability and some control-channel operations remained incomplete (#325, #329).
What's Changed
- update(deps): replace the russh fork with upstream russh 0.64.1 by @inureyes in #317
- update(deps): sync bssh-russh-sftp with upstream russh-sftp 3.0.1 by @inureyes in #318
- refactor(sftp): drop the bssh-russh-sftp fork for upstream russh-sftp by @inureyes in #320
- fix(sftp): throttle fast uploads instead of dropping the session by @inureyes in #321
- fix(ssh): enable macOS UseKeychain runtime support by @inureyes in #316
- feat: add direct ICMP network ping by @inureyes in #324
- fix: advance OpenSSH client compatibility by @inureyes in #325
- fix: close residual OpenSSH regress gaps in rekey, multiplex, and host certificates by @inureyes in #329
- fix(ssh): close host-certificate and Unix-socket hardening gaps by @inureyes in #332
- feat(ssh): support FIDO security keys through SecurityKeyProvider by @inureyes in #333
- feat(ssh): add the built-in internal SecurityKeyProvider over USB HID by @inureyes in #334
- build: bump Launchpad PPA toolchain and MSRV to Rust 1.97 by @inureyes in #341
- fix(security): constrain ProxyCommand endpoint token expansion by @inureyes in #342
- fix: Serialize HOME-sensitive unit tests by @inureyes in #344
- fix: Reject security-key policies the server cannot enforce by @inureyes in #343
- feat(ssh): add CTAP 2.1 UV token signing by @inureyes in #346
- feat(keygen): enroll and download FIDO security keys by @inureyes in #347
- docs: update security-key compatibility ledger by @inureyes in #348
Full Changelog: v3.0.1...v3.1.0