Как использовать X11 переадресацию ssh на Windows?

Вопрос или проблема

Я запускаю XServer от VcXsrv на Windows. Вот моя конфигурация VcXsrv, и я думаю, что он должен слушать на :0.0, что соответствует порту :6000.

<?xml version="1.0" encoding="UTF-8"?>
<XLaunch WindowMode="MultiWindow" ClientMode="NoClient" LocalClient="False" Display="-1" LocalProgram="xcalc" RemoteProgram="xterm" RemotePassword="" PrivateKey="" RemoteHost="" RemoteUser="" XDMCPHost="" XDMCPBroadcast="False" XDMCPIndirect="False" Clipboard="True" ClipboardPrimary="True"
ExtraParams="" Wgl= "True DisableAC= "True"" XDMCPTerminate= "False"/>

Мой сервер Linux имеет установленный xauth и включенный x11 forwarding через SSH. Вот часть конфигурации sshd_config на моем сервере Linux:

AddressFamily inet
AllowAgentForwarding yes
AllowTcpForwarding yes
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

Если я понимаю правильно, когда я запускаю ssh -X [email protected] в Windows Powershell, я должен увидеть:

  • ssh слушает на 127.0.0.1:6010 на сервере
  • переменная окружения DISPLAY на сервере установлена в localhost:10.0
  • Запуск gedit на сервере должен открыть окно в VcXsrv на Windows

Однако ничего из этого не происходит, как ожидалось. В выводе ssh -vvvv я вижу следующий лог:

debug1: X11 forwarding requested but DISPLAY not set

Сначала я думал, что на сервере Linux переменная DISPLAY неправильно настроена, но, как бы я ее ни изменял, она продолжает запрашивать ‘DISPLAY not set’. Поэтому я попытался настроить переменную окружения в Windows Powershell:

$env:DISPLAY = "localhost:0"

Интересно, что теперь он больше не запрашивает ‘DISPLAY not set’, но все равно не может открыть X11 forwarding.

debug1: No xauth program.
Warning: untrusted X11 forwarding setup failed:xauth key data not generated 

Вопрос

1. Что я упускаю? Нужно ли устанавливать xauth на Windows? Если да, то как его установить?

2. Какова цель установки DISPLAY в Windows Powershell? Используется ли это для указания, на какой XServer перенаправлять X-трафик?

Версия

  • Windows: Windows 10 Enterprise 20H2 19042.1237
  • LinuxServer: Debian GNU/Linux 11 (bullseye) 5.10.0-28-amd64

Попробуйте использовать опцию -Y вместо -X:
ssh -Y [email protected]

Ответ или решение

Как использовать X11 Forwarding по SSH на Windows: Полное руководство

При использовании X11 Forwarding по SSH на Windows с помощью VcXsrv есть множество нюансов, которые могут вызвать затруднения. В данной статье мы анализируем возможные проблемы, ошибки конфигурации и шаги к их устранению, опираясь на вашу ситуацию и требования.

1. Убедитесь, что VcXsrv правильно настроен

Первая ключевая задача – это правильно настроить VcXsrv. Убедитесь, что вы используете следующие основные параметры:

  • Window Mode: MultiWindow позволяет открывать множество окон.
  • Client Mode: NoClient.
  • Display number: Обычно это 0, что соответствует порту 6000 (как вы указали).
  • Clipboard: Включите опцию для совместного доступа к буферу обмена.

Если вы считаете, что VcXsrv прослушивает на :0.0, убедитесь, что этот сервер запущен до выполнения команды SSH.

2. Конфигурация сервера на стороне Linux

Ваши настройки sshd_config на Linux выглядят корректно для поддержки X11 Forwarding. Основное, что необходимо убедиться:

  • Убедитесь, что xauth установлен на вашем Linux сервере. Если нет, то установите его командой:
    sudo apt install xauth

3. Использование SSH с X11 Forwarding

Когда вы подключаетесь к Linux серверу, используйте команду:

ssh -X [email protected]

или попробуйте использовать параметр -Y, который обеспечивает более безопасный режим:

ssh -Y [email protected]

4. Задание переменной окружения DISPLAY

В Windows PowerShell вы можете задать переменную DISPLAY, чтобы указать, куда будет направляться X11 трафик. Вы можете установить переменную как:

$env:DISPLAY = "localhost:0"

Это указывает серверу о том, что X-сервер (то есть VcXsrv) запущен на localhost по порту 6000.

5. Проверка логов SSH

Вы упомянули, что при запуске команды SSH с флагом -vvvv выводили сообщение:

debug1: X11 forwarding requested but DISPLAY not set

Если после задания переменной DISPLAY (как мы рассмотрели выше) вы получаете другое сообщение:

debug1: No xauth program.
Warning: untrusted X11 forwarding setup failed: xauth key data not generated

это означает, что SSH не может найти xauth, чтобы сгенерировать необходимые ключи для обеспечения безопасности сеанса X11. Убедитесь, что он установлен на сервере и доступен в $PATH.

6. Установка xauth на Windows (если это необходимо)

На Windows xauth не требуется, так как это утилита для Linux. Основное, что убедитесь, это корректная установка на Linux сервере. На Windows же вы должны сосредоточиться на правильной настройке и запуске VcXsrv.

Итоговые шаги:

  1. Проверьте и настройте VcXsrv – убедитесь, что он работает до вашей SSH-команды.
  2. Убедитесь, что на Linux установлены и доступны необходимые пакеты (xauth).
  3. Используйте ssh -Y для лучшей совместимости.
  4. Если проблемы сохраняются, проверьте конфигурацию на сервере и логи.

Заключение

Проблемы с X11 Forwarding могут быть обусловлены множеством факторов, начиная от настройки клиента и сервера и заканчивая сетевыми и программными вопросами. Тщательная проверка всех элементов этой цепочки должна помочь вам успешно подключиться к серверу и использовать X11 приложения.

Если вы выполните все указанные шаги и проверки, у вас непременно получится настроить X11 Forwarding на Windows с использованием VcXsrv.

Оцените материал
Добавить комментарий

Капча загружается...