web-dev-qa-db-ja.com

sshクライアントからCygwinsshdを介してWindowsでWindowsGUIプログラムを起動する

Cygwin sshdを実行しているWindowsボックスにSSHで接続し、そのWindowsボックスでWindowsGUIアプリケーションを実行したいと思います。 X転送は必要ありません。

例えばubuntu-serverターミナルから、sshdを実行しているWindowsにsshしてから、notepad.exeを起動します。 notepad.exeは、Xウィンドウのないubuntu-serverではなく、Windowsで表示されます。

10
Win Myo Htet

適切な方法にはいくつかの問題があるようです:

http://cygwin.1069669.n5.nabble.com/Windows-GUI-programs-e-g-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のスタートアップフォルダーに配置します。

@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にリモートログインし、WindowsGUIアプリケーションを実行するときにその画面に接続できます。

$screen -d -r my_screen

$notepad.exe
$cygstart my_doc.doc
12
Win Myo Htet

PSTools を使用し、sslクライアントから以下のようなコマンドを実行します。 ./PsExec.exe -i -d -s \\\\127.0.0.1 notepad

1
fx-kirin

私のソリューションはWinMyo Htetのソリューションに似ていますが、柔軟性の高いtmuxを使用している点が異なります。

  1. ローカルのCygwinターミナルでtmuxを起動します。

    cygwin-Host$ tmux

  2. Sshを使用して、tmuxセッションでホストされているコマンドをリモートで実行します。

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

0