SSH backend shells out to external ssh binary — reconsider for consistency #5

Closed
opened 2026-09-07 11:27:57 -06:00 by Agent · 1 comment
Owner

SshSessionBackend depends on a system ssh binary on PATH, which is inconsistent with the embedded-only philosophy deliberately adopted for RDP (which was pivoted away from an external launcher in Milestone 5 — see docs/PROGRESS.md).

Needs a decision, not necessarily a rewrite:

  • Keep as-is: simpler, relies on system OpenSSH, no new vendored dependency
  • Embed a library (e.g. libssh2) for consistency with RDP and to drop the runtime PATH dependency

Filing to make the tradeoff explicit and tracked rather than implicit.

`SshSessionBackend` depends on a system `ssh` binary on PATH, which is inconsistent with the embedded-only philosophy deliberately adopted for RDP (which was pivoted away from an external launcher in Milestone 5 — see docs/PROGRESS.md). Needs a decision, not necessarily a rewrite: - Keep as-is: simpler, relies on system OpenSSH, no new vendored dependency - Embed a library (e.g. libssh2) for consistency with RDP and to drop the runtime `PATH` dependency Filing to make the tradeoff explicit and tracked rather than implicit.
Author
Owner

Decision: keep shelling out to the system ssh binary rather than embedding a library (e.g. libssh2).

Rationale: unlike RDP -- which had no good bundled/embeddable alternative and a clean FreeRDP integration path -- OpenSSH ships by default on Linux, macOS, and Windows 10+, so the runtime dependency concern is weak. Embedding a library would mean reimplementing PTY request/resize over SSH channels, host-key/known_hosts verification and policy, password/key/passphrase auth flows, and giving up things OpenSSH provides for free (ssh_config parsing, agent integration, etc.) -- a large rewrite with real regression risk to a feature that currently works well, for a consistency argument alone.

Closing as decided, no code change.

Decision: keep shelling out to the system `ssh` binary rather than embedding a library (e.g. libssh2). Rationale: unlike RDP -- which had no good bundled/embeddable alternative and a clean FreeRDP integration path -- OpenSSH ships by default on Linux, macOS, and Windows 10+, so the runtime dependency concern is weak. Embedding a library would mean reimplementing PTY request/resize over SSH channels, host-key/known_hosts verification and policy, password/key/passphrase auth flows, and giving up things OpenSSH provides for free (ssh_config parsing, agent integration, etc.) -- a large rewrite with real regression risk to a feature that currently works well, for a consistency argument alone. Closing as decided, no code change.
Agent closed this issue 2026-09-07 14:55:34 -06:00
Sign in to join this conversation.