首页/系统/Windows 运维速查/PowerShell Remoting over SSH

PowerShell Remoting over SSH

用 SSH 替代 WinRM 跑 PowerShell Remoting:跨平台、跨网段、不依赖域信任,适合 Linux/macOS 与 Windows 混合环境。

Windows 运维速查系统更新于 2026-10-13

PowerShell over SSH 是什么

这是把 PowerShell 远程执行的传输层从 WinRM 换成 SSH:目标机上以 SSH 子系统的方式启动 pwsh,客户端用 -SSHTransport 建立会话。好处是跨平台、跨网段、不依赖域信任——Windows 与 Linux 混在一起的环境里,只要 22 端口通就能用同一套命令管理。代价是只支持 SSH 传输自己的参数,WinRM 专有的能力在它上面用不了。

基本信息

适用平台PowerShell 7 为主的跨平台环境(Windows / Linux / macOS)
服务端配置在 sshd_config 里以 Subsystem powershell 指定 pwsh 可执行文件
客户端语法New-PSSession -HostName 用户@主机 -SSHTransport
前置条件SSH 服务已运行、端口可达、密钥或口令认证可用
传输差异不支持 CredSSP 等 WinRM 专有参数
相关命令ssh user@host 'hostname' 可先做冒烟测试

典型使用场景

  • 无法开启 WinRM 的受限网络里仍要批量执行 PowerShell
  • Windows 与 Linux 混合环境中用同一套脚本跨平台管理
  • 跨域或跨信任边界时避开 Kerberos 信任依赖
  • 临时跳板排障:先 ssh 通再建会话扩展为脚本执行
  • 作为远程通道的兜底方案,在 WinRM 全线故障时保持可运维

常用示例

常用示例
# 服务端 %ProgramData%\ssh\sshd_config 增加一行(路径按实际安装位置)
# Subsystem powershell C:/Progra~1/PowerShell/7/pwsh.exe -sshs -NoLogo
Restart-Service sshd                                  # 改完重启 SSH 服务
ssh user@web01 'hostname'                             # 先冒烟验证 SSH 通
ssh user@web01 'pwsh -v'                              # 确认子系统与版本
$s = New-PSSession -HostName user@web01 -SSHTransport # 建立 PowerShell 会话
Invoke-Command -Session $s { $PSVersionTable.PSVersion }
Remove-PSSession $s                                   # 用完释放

WinRM 与 SSH 传输对比

对比项WinRMSSH 传输
默认端口5985 / 598622
域信任依赖有无
跨平台Windows 为主Windows 与 Linux 通用
专有参数支持 CredSSP不支持
配置位置WinRM 服务与监听器sshd_config 子系统
sshd_config 里的路径含空格时容易出问题:用 8.3 短名(如 C:/Progra~1)或给整段加引号,否则子系统起不来,客户端会报找不到子系统。
SSH 传输不支持 WinRM 专有认证机制,二次跳转类的需求无法照搬既有方案;涉及多跳访问的场景要重新设计路径,不要假设换掉传输层就能原样跑通。
别只顾着看 PowerShell 侧的报错:Windows 上 SSH 的登录失败与子系统启动异常会写进事件日志或 %ProgramData%\ssh 下的日志文件,客户端提示含糊时去那里通常能看到确切原因。

易错点

  • 改完 sshd_config 忘记重启 SSH 服务,客户端报找不到子系统,误判为配置写错
  • 子系统路径里有空格又没处理,pwsh 起不来,报错信息却不点明路径问题
  • 把既有 WinRM 脚本直接改成 SSH 传输,遇到专有参数时才发现不支持
  • 排障时只查 PowerShell 侧日志,忽略了 SSH 服务端的登录与错误日志

数据来源与参考

  • Microsoft Learn:PowerShell Remoting over SSH
  • Microsoft Learn:在计算机之间远程处理

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌