10

Я использую Putty на машине Windows, чтобы ssh на другой сервер. Оказавшись там, я пытаюсь использовать переадресацию X11 для всплывающих окон на моем компьютере. Удаленная система не является проблемой, поскольку это большая система, которая успешно используется многими другими пользователями таким же образом.

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

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

К сожалению, проблема сохраняется. Я исчерпал ресурсы Googling по этой теме, и поэтому буду очень признателен за любую помощь. Спасибо!

4 ответа4

11

Последние обновления Cygwin изменили свой X-сервер, чтобы он не прослушивал TCP-соединения по умолчанию. Вместо этого Cygwin X использует (реализация Cygwin) доменные сокеты Unix, а PuTTY (как нативная программа Windows) не знает, как их использовать.

Cygwin X FAQ и списки рассылки Cygwin содержат более подробную информацию.

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

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

и замените его прямым вызовом xinit с моими желаемыми параметрами (добавьте -listen tcp и remove -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 может быть целесообразной.

6

В качестве альтернативы тому, что сказал Джош Келли, вы также можете отредактировать файл startxwin и добавить «-listen tcp» к аргументам сервера по умолчанию.

Старый: defaultserverargs = "- многооконный"

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

Также с включенной аутентификацией мне пришлось указать putty на файл аутентификации, созданный скриптом startxwin. Моя была расположена здесь: c:\cygwin64\home\USERNAME.Xauthority

Поскольку этот файл воссоздан, вам придется перезапускать сеансы замазки после сброса вашего xserver.

В целях безопасности вы также можете разрешить соединения только с локального хоста, поскольку именно здесь putty передает его.

2

Я попытался установить "X display location" на localhost:0

Пожалуйста, попробуйте установить "X display location" на «:0.0»!

export DISPLAY=:0.0

Джош Келли упомянул Cygwin X FAQ:

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

Это для xming, но, возможно, этот FAQ поможет? Идея та же, но с использованием xming вместо cygwin на вашей локальной машине. https://wiki.utdallas.edu/wiki/display/FAQ/X11+Forwarding+using+Xming+and+PuTTY

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .