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

Win*_*tet 11 ssh cygwin window sshd

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

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

Win*_*tet 12

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

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

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

#!/bin/bash
screen -dmS "my_screen"
Run Code Online (Sandbox Code Playgroud)

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

$screen -d -r my_screen

$notepad.exe
$cygstart my_doc.doc
Run Code Online (Sandbox Code Playgroud)