通过 ssh 客户端的 Cygwin sshd 在 Windows 中启动 Windows GUI 程序

通过 ssh 客户端的 Cygwin sshd 在 Windows 中启动 Windows GUI 程序

我想通过 ssh 进入运行 Cygwin sshd 的 Windows 机器,并在该 Windows 机器中运行 Windows GUI 应用程序。我不想要 X 转发。

例如,从 ubuntu-server 终端,我通过 ssh 进入运行 sshd 的 Windows,然后启动 notepad.exe。notepad.exe 将显示在 Windows 中,而不是在没有 X windows 的 ubuntu-server 中。

答案1

正确的方法似乎存在一些问题:

http://cygwin.1069669.n5.nabble.com/Windows-GUI-programs-eg-notepad-start-but-are-invisible-after-ssh-login-td56256.html

http://cygwin.com/ml/cygwin/2007-10/msg00334.html

重新安装‘sshd’,将‘-i’标志指定为‘cygrunsrv’,或者在“管理工具”->“服务”下编辑当前服务,并在服务“属性”的“登录”选项卡中选中“允许服务与桌面交互”。

所以我尝试了一些 hack。我创建了一个 cygwin_screen.cmd 并将其放在 Windows 启动文件夹中。

@echo off 
C:
chdir C:\cygwin\bin
bash --login -i "/home/username/bin/start_screen.sh"

start_screen.sh 很简单,它将确保我们有要连接的屏幕。

#!/bin/bash
screen -dmS "my_screen"

现在,当我想要运行 Windows GUI 应用程序时,我可以从 ssh 客户端远程登录到 Windows 并附加到该屏幕。

$screen -d -r my_screen

$notepad.exe
$cygstart my_doc.doc

答案2

使用工具并从 ssl 客户端运行以下命令。 ./PsExec.exe -i -d -s \\\\127.0.0.1 notepad

答案3

我的解决方案与 Win Myo Htet 的解决方案类似,但它使用了 tmux,因此灵活性更高。

  1. 在本地 Cygwin 终端上启动 tmux。

    cygwin-host$ tmux

  2. 使用 ssh 远程运行命令,托管在 tmux 会话中。

    other-host$ ssh cygwin-host tmux new-window notepad

相关内容