You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过SSH连接Win10运行Steam browser protocol无响应且客户端闪退求助

问题原因解析

为何Steam能识别命令来源

  • Windows系统存在会话隔离机制:本地登录用户运行的程序属于交互式用户会话(通常会话ID为1),而SSH默认登录后创建的是后台服务会话(会话ID为0),两个会话的窗口站、用户访问令牌、桌面上下文完全隔离。
  • Steam运行时会绑定当前所属的会话上下文,当检测到同账号下来自其他会话的Steam协议调用请求时,会判定为新的会话登录行为,主动断开原有会话的客户端连接,对应你看到的闪退+登出日志。
可行解决办法

方法1:使用PsExec指定交互式会话运行命令

PsExec是微软官方Sysinternals工具集的组件,可以指定进程运行的会话ID:

  1. 先将PsExec.exe放到目标Win10设备的系统路径(比如C:\Windows\System32)下
  2. 修改Python调用代码为:
subprocess.run("psexec.exe -i 1 -d cmd /c \"start steam://rungameid/[gameid]\"", shell=True)

注:-i 1指定运行在会话ID为1的交互式会话下,如果你的设备有多个用户登录,可以在目标设备cmd执行query user查询对应用户的会话ID,替换数字即可。

方法2:配置SSH使用交互式会话登录

修改Win10设备的OpenSSH服务配置:

  1. 打开C:\ProgramData\ssh\sshd_config文件,确保配置项PermitTTY yes处于启用状态,保存后重启sshd服务
  2. 本地SSH连接时添加-t参数强制分配伪终端,格式为ssh -t 用户名@目标IP
  3. 确保SSH登录的账号和本地运行Steam的账号为同一个用户,再执行原Python命令即可。

方法3:通过计划任务中转调用

提前在目标Win10设备创建计划任务:

  • 常规选项卡:选择「只在用户登录时运行」,勾选「使用最高权限运行」
  • 操作选项卡:操作选择「启动程序」,程序或脚本填cmd,参数填/c start steam://rungameid/[gameid]
  • 保存任务并自定义任务名(比如StartSteamGame)
    SSH连接后执行命令触发任务即可:
subprocess.run("schtasks /run /tn \"StartSteamGame\"", shell=True)

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 13:45:02