Devolutions / Devolutions/ironPosh
Transport: SSH
- Dominant language
- Rust
- Stars
- 10
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
## Gap
We only support WS-Management over HTTP/HTTPS (and the WASM/Gateway tunnel). PowerShell also supports SSH-based remoting, which bypasses WinRM entirely and runs PSRP over an SSH subsystem (`pwsh -sshs`). This is the most commonly requested non-WinRM transport (cross-platform, no WinRM config). pypsrp does not have it; native C# does.
## How it works
Over SSH, PSRP fragments are exchanged using the **out-of-process packet protocol** (PSGuid-tagged XML packets: Data/DataAck, Command/CommandAck, Close/CloseAck, Signal/SignalAck) over the SSH channel's stdin/stdout — not SOAP. So this also lays the groundwork for the other out-of-proc transports (see the umbrella issue).
## Required
- A transport abstraction in client-core that decouples PSRP fragment exchange from the WS-Management SOAP layer.
- An SSH transport that launches the remote `pwsh -sshs -NoLogo` subsystem and speaks the out-of-proc packet protocol.
- Surface SSH connection config (host/user/key) in the tokio client.
## Acceptance
- e2e: open a runspace pool and run a command to a Linux/Windows host over SSH.
## References
- Native C# `OutOfProcTransportManager.cs` (`SSHClientSessionTransportManager`, packet protocol at ~lines 41-124), `SSHConnectionInfo`.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reading the client-core transport code and the tokio client connection setup, then compare the referenced OutOfProcTransportManager.cs and SSHConnectionInfo, especially the packet protocol around lines 41-124. Run the existing test suite to establish a baseline. Done means an end-to-end test opens a runspace pool and runs a command on a Linux or Windows host through pwsh -sshs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- powershell, rust
- Domain
- backend, networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 25/100