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


10

我想在运行Cygwin sshd的Windows窗口中使用ssh并在该Windows窗口中运行Windows GUI应用程序。我不要X转发。

例如,从ubuntu服务器终端,我将ssh进入运行sshd的Windows,然后启动notepad.exe。notepad.exe将在Windows中显示,而不在没有X窗口的ubuntu服务器中显示。

Answers:


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

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

因此,我尝试了一些技巧。我创建一个cygwin_screen.cmd并将其放在Windows Startup文件夹中。

@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"

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

$screen -d -r my_screen

$notepad.exe
$cygstart my_doc.doc

该解决方案对我有用,但是当我再次分离时,客户端屏幕进程挂起。我必须按ctrl-z并杀死该进程。在一个上下文中(在Windows框上)创建守护程序,然后从另一个上下文附加(ssh登录)似乎创建了此问题。从我的ssh连接创建然后附加不会导致冲突。
蒂姆·鲁普

1

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


0

我的解决方案与Win Myo Htet的解决方案相似,但它使用的是tmux,它具有更大的灵活性。

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

    cygwin-host$ tmux

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.