在 Windows 10 上通过 OpenSSH 运行 GUI 应用程序

在 Windows 10 上通过 OpenSSH 运行 GUI 应用程序

我想通过内置的 OpenSSH 服务器在 Windows 10 台式机上启动 GUI 应用程序。问题是它似乎无法在正确的用户会话中呈现 GUI?

应用程序显示在任务管理器中,但未呈现。我发现了一些(丑陋的)解决方法,据说可以在 Windows 7 和 8 上运行,但在 Windows 10 上却不起作用。最好不要改变我启动应用程序的方式,而是改变 SSH 服务器启动程序的方式。

我通过 ssh 登录,同时以实际机器上桌面会话登录的用户身份登录。在 Linux 上,您必须通过环境变量(例如 DISPLAY=:0)指定应用程序应在哪些 X11 会话中启动。我是否必须在 Windows 上执行类似操作来告诉 shell 在哪个上下文中启动应用程序?

答案1


似乎并不容易规避再发明一个轮子

服务器端

  • 监听 UDP 端口
  • 称呼ShellExecute(NULL,"open",...)在收到数据包时
  • 能够在默认浏览器中打开 URL 或启动 GUI 应用程序(例如 cmd/Taskmgr/mmc),这些应用程序会弹出到屏幕上,所有 Linux_Xorg_SSH_DISPLAY=:0 都是这样
  • “它可以在我的机器上运行。”适用于 Microsoft Windows [版本 10.0.19042.746]
  • 未实施身份验证
  • 不检查 UDP 数据包中的内容或它是否对 ShellExecute() 有效

客户端

  • 发送 UDP 数据包供服务器执行
  • 保存 argv 中提供的服务器 IP 地址,以便下次省略它

答案2

如果 Windows OpenSSH 服务未运行,您可以从目标用户启动它。启动脚本就足够了。

在 Windows 中创建用户 SSH 密钥(您通常都会这样做):

 ssh-keygen

接受默认位置。我测试时没有使用密码。

启动 OpenSSH,使用用户的私钥作为主机密钥:

start /min %SYSTEMROOT%\System32\OpenSSH\sshd -h %HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa

您可以使用上述内容创建单行 sshd.bat,并从 shell:startup 链接到它。

相关内容