SSH クライアントから Cygwin sshd を介して Windows で Windows GUI プログラムを起動する

SSH クライアントから Cygwin sshd を介して Windows で Windows GUI プログラムを起動する

Cygwin sshd を実行している Windows ボックスに ssh し、その Windows ボックスで Windows GUI アプリケーションを実行したいと思います。X 転送は不要です。

たとえば、ubuntu-server ターミナルから、sshd を実行している Windows に ssh し、notepad.exe を起動します。notepad.exe は Windows に表示されますが、X ウィンドウのない 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

'cygrunsrv' に '-i' フラグを指定して '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 にリモート ログインし、Windows GUI アプリケーションを実行したいときにその画面に接続できるようになりました。

$screen -d -r my_screen

$notepad.exe
$cygstart my_doc.doc

答え2

使用PSツール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

関連情報