Запуск программы Windows GUI в Windows через Cygwin sshd из ssh клиента

10

Я хотел бы зайти в мой Windows-бокс под управлением Cygwin sshd и запустить приложение Windows GUI в этом Windows-боксе. Я не хочу пересылку X

Например, из терминала Ubuntu-сервера я запускаю ssh в Windows и запускаю notepad.exe. Notepad.exe будет отображаться в Windows, а не в Ubuntu-сервере без X Windows.

Win Myo Htet
источник

Ответы:

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', или отредактируйте текущую службу в разделе "Администрирование" -> "Службы" и установите флажок "Разрешить службе взаимодействовать с рабочим столом" на вкладке "Вход в систему" службы. «Свойства».

Поэтому я попробую взломать. Я создаю 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 из ssh-клиента и подключиться к этому экрану, когда я хочу запустить приложение Windows GUI.

$screen -d -r my_screen

$notepad.exe
$cygstart my_doc.doc
Win Myo Htet
источник
Это решение работает для меня, но когда я снова отсоединяюсь, клиентский экран зависает. Я должен Ctrl-Z, и убить процесс. Создание демона в одном контексте (в окне Windows) и присоединение из другого (логин ssh), кажется, создает эту проблему. Создание и последующее подключение из моего ssh-соединения не вызывает конфликта.
Тим Рупе
1

Используйте PSTools и выполните команду, как показано ниже, из клиента ssl. ./PsExec.exe -i -d -s \\\\127.0.0.1 notepad

FX-кирин
источник
0

Мое решение аналогично Win Myo Htet, за исключением того, что оно использует tmux, который обладает большей гибкостью.

  1. Запустите tmux на локальном терминале Cygwin.

    cygwin-host$ tmux

  2. Используйте ssh для удаленного запуска команды, размещенной в сеансе tmux.

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

enigmaticPhysicist
источник