![通过 ssh 客户端的 Cygwin sshd 在 Windows 中启动 Windows GUI 程序](https://linux22.com/image/1346214/%E9%80%9A%E8%BF%87%20ssh%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%9A%84%20Cygwin%20sshd%20%E5%9C%A8%20Windows%20%E4%B8%AD%E5%90%AF%E5%8A%A8%20Windows%20GUI%20%E7%A8%8B%E5%BA%8F.png)
我想通过 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.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,因此灵活性更高。
在本地 Cygwin 终端上启动 tmux。
cygwin-host$ tmux
使用 ssh 远程运行命令,托管在 tmux 会话中。
other-host$ ssh cygwin-host tmux new-window notepad