Devolutions / Devolutions/ironPosh

Transport: SSH

Open
#47 0 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.