Putty-> Cygwin X11 Forwarding "Не вдається відкрити дисплей" Помилка


11

Я використовую Putty на машині Windows, щоб перейти на інший сервер. Потрапивши туди, я намагаюся використовувати перенаправлення X11 для появи вікон на свій комп'ютер. У віддаленій системі це не проблема, оскільки це велика система, яка успішно використовується багатьма іншими користувачами таким же чином.

Я входжу в систему через Putty без проблем, а потім запускаю startxwinв cygwin. Однак після запуску xtermв Putty мені видається помилка, xterm Xt error: Can't open display: localhost:##.0коли знаки фунта є двома цілими числами, значення яких змінюється щоразу при вході в систему.

  • Увімкнено переадресацію X11 у налаштуваннях Putty
  • Я спробував встановити "X-дисплей" на localhost:0
  • Я забезпечив завантаження пакета X11 для cygwin
  • Я спробував використовувати лише startxзамість цьогоstartxwin
  • Я спробував setenv DISPLAY localhost:0іsetenv DISPLAY my.ip.address

На жаль, питання зберігається. Я вичерпав свої ресурси Google на цю тему, і тому я дуже вдячний за будь-яку допомогу. Дякую!


localhost:##.0Які фактичні цифри ви бачите тут? Яке програмне забезпечення X ви працюєте на комп'ютері Windows?
Кенстер

Відповіді:


11

Останні оновлення Cygwin змінили свій X-сервер, щоб він не прослуховував TCP-з'єднання за замовчуванням. Натомість, Cygwin's X використовує (реалізацію Cygwin) розеток домену Unix, і PuTTY (як рідна програма Windows) не знає, як ними користуватися.

У Cygwin X Часті питання і Cygwin розсилки списків більше деталей.

Моє рішення було взяти стандартний ярлик Cygwin, який використовує startxwin для запуску X:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin"

і замініть його прямим викликом xinit моїми бажаними параметрами (додавання -listen tcpта видалення -auth):

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/xinit /etc/X11/xinit/startxwinrc -- /usr/bin/XWin :0 -multiwindow -listen tcp"

Це менш безпечно, ніж нові за замовчуванням Cygwin; його слід використовувати лише в однокористувацькій системі, і налаштування вашого брандмауера для блокування з'єднань з XWin може бути розумним.


куди це запустити ?? у терміналі cygwin / PS / CMD
yellowandred

1
@yellowandred Починається з `C:`, тому це шлях у стилі Windows, а не термінал Cygwin. Я просто помістив його в розділ "Ціль" свого ярлика Windows. CMD повинен працювати. PowerShell повинен працювати, але вам, можливо, доведеться оновити котирування.
Джош Келлі

6

Як альтернатива тому, що сказав Джош Келлі, ви також можете відредагувати файл startxwin та додати аргументи сервера за замовчуванням "-listen tcp".

Старий: defaultserverargs = "- багатовіконне"

Нове: defaultserverargs = "- multiwindow -listen tcp"

Також із включеною автентифікацією мені довелося вказати шпаклівку на файл аутентифікації, створений сценарієм startxwin. Тут розміщена шахта: c: \ cygwin64 \ home \ USERNAME.Xauthority

Оскільки цей файл відтворено, вам доведеться перезапустити сеанси шпаклівки після скидання xserver.

Для безпеки ви також можете дозволити підключення лише з localhost, оскільки саме там шпаклівка пересилає його.


4

Я спробував встановити "Місце відображення X" на localhost: 0

Спробуйте встановити "X-дисплей" для ": 0,0" замість!

export DISPLAY=:0.0

Джош Келлі згадав про поширені запитання про Cygwin X :

3.13. Я оновив і тепер клієнти X не можуть підключитися

A1:

Оскільки сервер X 1.17, за замовчуванням сервер не прослуховує TCP / IP-з'єднання, лише приймає локальні з'єднання в сокет домену unix.

Для місцевих клієнтів використовуйте DISPLAY =: 0,0, а не DISPLAY = localhost: 0.0, DISPLAY = 127.0.0.1: 0.0, DISPLAY = :: 1: 0.0 тощо.



0

Як говорили інші, хитрість полягає в тому, щоб додати -listen tcpдо сервера аргументи. Однак я рекомендую зробити це, зателефонувавши startxwin -- -listen tcpдозволити startxwinскласти решту xinitкоманди.

У ярлику меню "Пуск":

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin -- -listen tcp"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.