在Windows上通过OpenSSH启动GUI程序?



我正在尝试执行Labview VI,从另一台Windows机器通过ssh调用的.bat文件启动它。 所以我做

ssh myuser@IP
cd  Desktop
launchVis.bat

我使用用户和密码连接。 myuser 拥有启动批处理文件的所有权限。 同时,我在同一台计算机上通过RDP连接检查执行。

如果我从远程机器上的cmd行运行bat文件,VI会正常启动 如果我从 ssh 连接运行 bat 文件, 我 可以 在 bat 文件 中看到 回声 的 输出, 但 LabVIEW 将 在 与 RDP-TCP#1 不同的 会话 中 启动。 结果是,我可以看到一个名为"服务的会话"LabVIEW"进程启动,但我看不到VI正在执行,通常,我不知道IF是否正在执行。

谷歌搜索这个问题,似乎我无法避免在"服务"会话中启动进程,因此,我无法通过SSH启动任何GUI程序。 建议的解决方案是使用 PsExec,或者可能是 ssh 服务器的第三部分(使用第三部分 ssh 服务器,我在 Windows 7 上达到了我的目标(

将 SSHd 作为服务运行会使启动桌面应用程序变得困难,因为服务无法访问用户桌面(Windows Station,WinSta0(链接

选项 1:以用户身份启动 SSHd

  • 这在最新的OpenSSH实现中失败了fork of unprivileged child failed,因为自2017年发布的OpenSSH 7.5链接以来,不再可能以用户身份运行SSHd
  • 使用旧的实现或OpenSSH的分支,例如dropbear,FreeSSH或类似的东西

选项 2:使用有权访问 Windows Station 的启动器

在Windows上,还有2个选项可以通过SSH启动桌面应用程序:链接到Github OpenSSH问题

  • 施特
  • 本地主机上的 psexec

用法:

ssh user@host "psexec -i 1 mydesktoplauncher.bat"

有关可选参数,请参阅 psexec 文档,例如-i 1

使用第三方ssh服务器的"解决方案"是这样的:

  1. 卸载Windows10
    的可选功能"OpenSSH服务器">
  2. 下载并安装第三方 ssh 服务器。我用了freeSSHd
  3. 请勿将此软件作为服务安装。
  4. 在软件的设置中设置允许的用户。
  5. 在 shell::startup 文件夹中放置一个指向该软件 exe 的链接,以便它在启动时运行。

这样,ssh 服务器将以用户身份启动,并且可以执行 GUI 程序。

不幸的是,我没有设法与Windows官方OpenSSH服务器实现相同的目标,因为它无法以用户身份启动,但似乎仅作为服务工作

最新更新