我正在尝试将一台 Windows 机器设置为 SSH 服务器,以便我可以从另一台 Windows 机器通过 SSH 连接到它。
我在服务器上安装了 OpenSSH,可以使用 Putty 从另一个 Windows 客户端成功连接到它。我正在尝试编写一个脚本,该脚本将打开特定应用程序,然后运行 Autohotkey 脚本以在该应用程序中执行某些操作。我在 SSH 服务器上有一个批处理文件。如果我在本地运行该批处理文件,它会执行我想要的操作:打开应用程序、运行 Autohotkey 脚本并正常退出。但是,如果我通过 SSH 会话打开同一个批处理文件,应用程序进程将启动(我在任务管理器中看到该进程),但 GUI 实际上不会打开。从我所能找到的信息来看,这可能是因为 SSH 作为服务运行,不会以当前登录用户的身份打开应用程序。为了尝试规避这种情况,我尝试了“runas”命令。同样,我得到了相同的结果(.exe 显示在任务管理器中,但 GUI 没有打开)。此外,这两种方法都会打开 AHK 脚本,但脚本不会执行任何操作。
我还尝试了另一个 SSH 服务器 freeSSHd,它不作为服务运行。使用这个,我可以让脚本通过 SSH 执行我想要的操作。但是,这个解决方案对我来说不起作用,因为理想情况下不会有任何外围设备连接到 SSH 服务器。它只会通过以太网连接到网络。如果它没有作为服务运行,这意味着每次重新启动时我都需要手动打开应用程序并单击“启动 SSH 服务器”按钮。
如何通过 SSH 打开 GUI 应用程序?
谢谢
答案1
服务被限制显示任何 UI 元素;它们被放在一个东西上(桌面或 Windows Station 或其他东西,目前无所谓)。因此任何 GUI 都无法工作。
您需要一种方法来创建新的东西,然后将应用程序放入那个东西中,所有这些都来自 SSH 登录会话。虽然可以构建一些东西来执行此操作,但这会浪费时间,因为它已经完成了。它称为远程桌面连接 (RDC),又称远程桌面协议 (RDP)。使用 RDP 而不是 SSH。使用 RDP 客户端而不是 SSH 客户端。
如果出于某种原因您必须使用 SSH,请使用 SSH 建立与计算机的连接,然后使用 SSH 端口转发来隧道 RDP。
如果由于某种原因,您认为不能使用 RDP,请解释原因。
答案2
因此,最终可行的解决方案是使用 PSExec(PSTools 的一部分)。我之前曾短暂尝试过让它工作,但遇到了同样的问题(GUI 未显示)。诀窍是我需要使用 -i 选项进行交互式会话。感谢其他人的帮助。