Skip to content

Transport: SSH #47

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions