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

ALE*_*LEX 8 ssh user-interface automation windows-10

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

 ssh myuser@IP
 cd  Desktop
 launchVis.bat
Run Code Online (Sandbox Code Playgroud)

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

如果我从远程计算机上的cmd行运行bat文件,VI将正常启动如果我从ssh连接运行bat文件,我可以在bat文件中看到回显的输出,但LabVIEW将在不同的会话中启动来自 RDP-TCP#1。结果是,我可以看到一个名为“Services”的会话中启动了一个“LabVIEW”进程,但我看不到 VI 正在执行,而且一般来说,我不知道 IF 是否正在执行。

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

dom*_*mih 10

将 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"
Run Code Online (Sandbox Code Playgroud)

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


ALE*_*LEX 6

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

  1. 卸载Windows10的可选功能“OpenSSH Server”
  2. 下载并安装第三方 ssh 服务器。我用的是freeSSHd
  3. 请勿将此软件作为服务安装。
  4. 在软件的设置中设置允许的用户。
  5. 将这个软件的exe链接放在shell::startup文件夹中,这样它就会在启动时运行。

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

不幸的是,我没有设法使用 Windows 官方 OpenSSH 服务器实现相同的目标,因为它无法作为用户启动,但似乎只能作为服务运行