Skip to content

fix(cli)!: restore OpenSSH short flag semantics - #313

Merged
inureyes merged 3 commits into
mainfrom
fix/issue-287-openssh-short-flags
Sep 1, 2026
Merged

fix(cli)!: restore OpenSSH short flag semantics#313
inureyes merged 3 commits into
mainfrom
fix/issue-287-openssh-short-flags

Conversation

@inureyes

@inureyes inureyes commented Aug 31, 2026

Copy link
Copy Markdown
Member

Summary

  • restore OpenSSH meanings for -N, -f, -C, -A, -S, -k, and -b in single-destination mode while retaining bssh extensions as long options and pdsh meanings in pdsh mode
  • complete the connection-multiplexing lifecycle with authenticated background workers, ControlPersist, forwarding control commands, and no-session/background execution
  • implement session-scoped SSH agent forwarding, authentication banners, quiet diagnostics, query aliases, and configuration/runtime wiring needed by the compatibility suite
  • accept repeated -E options and -O proxy, preserve the OpenSSH -F /dev/null convention without weakening Include validation, and keep transfer fixtures independent of platform debug-symbol size
  • update migration guidance, examples, man pages, measured compatibility documentation, and the committed Linux baseline

Compatibility result

The pinned OpenSSH V_10_3_P1 harness reports 60/66 passes on macOS and 61/69 on Ubuntu in CI. Both platforms reach the epic's 60-pass gate. Remaining failures are documented in the uploaded result tables and are not concealed by lowering the eligible-result floor.

The requested published warning cycle in an earlier 2.x release cannot be created retroactively. This change does emit bounded migration warnings on interactive standard error, documents every long-option rewrite, and does not claim that a prior release contained those warnings. Redirected protocol streams and -E logs remain byte-transparent.

Validation

  • cargo fmt --all -- --check
  • cargo clippy --all-targets --all-features -- -D warnings
  • cargo test --lib (1,699 passed, 7 ignored)
  • cargo test --test log_file_test (5 passed)
  • cargo test --test agent_forwarding_live_test -- --nocapture (6 passed)
  • cargo test --test control_multiplexing_live_test -- --nocapture (9 passed)
  • make openssh-regress-selftest (14 passed)
  • python3 tests/openssh-regress/run.py --test agent (1 passed)
  • python3 tests/openssh-regress/run.py --test sftp (1 passed with the stable 1 MiB fixture)
  • python3 tests/openssh-regress/run.py --test forward-control --test sshsig (2 passed with audited 180-second minimums)
  • GitHub CI: macOS OpenSSH harness (60 passed, 6 failed, 7 environmental, 6 upstream skips)
  • GitHub CI: Ubuntu OpenSSH harness (61 passed, 8 failed, 4 environmental, 6 upstream skips)

The full all-target Rust run has three environment-dependent localhost SSH authentication failures. The same three failures reproduce on the base main commit; all other targets pass.

Closes #286

Closes #287

Part of #275

Reassign the seven colliding short options in single-host mode while preserving bssh extensions as long options and pdsh meanings in pdsh mode. Complete the multiplexing background lifecycle, agent forwarding, compatibility measurements, and migration documentation needed to close the final epic units.
@inureyes inureyes added impact:breaking Breaking change that requires migration priority:high High priority issue status:review Under review type:breaking-change Breaking change that requires migration type:bug Something isn't working labels Aug 31, 2026
Keep migration notices on interactive stderr so redirected protocol streams remain byte-transparent. Add audited per-test minimum timeouts for the two upstream matrices whose valid runtimes exceed the base limit under local or shared CI load.
Accept repeated diagnostic files and proxy control sessions, preserve the OpenSSH /dev/null config convention, and decouple transfer fixtures from debug binary size.
@inureyes
inureyes merged commit 106adc5 into main Sep 1, 2026
5 checks passed
@inureyes
inureyes deleted the fix/issue-287-openssh-short-flags branch September 1, 2026 01:31
@inureyes inureyes added status:done Completed and removed status:review Under review labels Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

impact:breaking Breaking change that requires migration priority:high High priority issue status:done Completed type:breaking-change Breaking change that requires migration type:bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(cli)!: give OpenSSH back its short flags (-N, -f, -C, -A, -S, -k, -b) feat(ssh): support connection multiplexing (-M, -O, ControlPath)

1 participant