- Вопрос или проблема
- Вопрос
- Версия
- Ответ или решение
- Как использовать X11 Forwarding по SSH на Windows: Полное руководство
- 1. Убедитесь, что VcXsrv правильно настроен
- 2. Конфигурация сервера на стороне Linux
- 3. Использование SSH с X11 Forwarding
- 4. Задание переменной окружения DISPLAY
- 5. Проверка логов SSH
- 6. Установка xauth на 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
.
Итоговые шаги:
- Проверьте и настройте
VcXsrv
– убедитесь, что он работает до вашей SSH-команды. - Убедитесь, что на Linux установлены и доступны необходимые пакеты (
xauth
). - Используйте
ssh -Y
для лучшей совместимости. - Если проблемы сохраняются, проверьте конфигурацию на сервере и логи.
Заключение
Проблемы с X11 Forwarding могут быть обусловлены множеством факторов, начиная от настройки клиента и сервера и заканчивая сетевыми и программными вопросами. Тщательная проверка всех элементов этой цепочки должна помочь вам успешно подключиться к серверу и использовать X11 приложения.
Если вы выполните все указанные шаги и проверки, у вас непременно получится настроить X11 Forwarding на Windows с использованием VcXsrv
.