Ubuntu + Xming в Windows WSL: можно открыть графический интерфейс с помощью команды ssh +, но не во время сеанса SSH [закрыто]

Быстрое решение вопроса

  • На хосте машине, не помещайте туда никаких операторов DISPLAY = . Если существует, удаленный хост попытается отобразить графический интерфейс пользователя на своем собственном порте дисплея;
  • На клиентском компьютере укажите export DISPLAY = 127.0.0.1: 0.0 в {{ 1}} ~ / .bashrc . Эта переменная DISPLAY должна соответствовать Xming , которая запускается на клиентском компьютере.

Затем просто подключитесь к хосту с помощью флага -X и получите бесплатный доступ ко всем программам с графическим интерфейсом пользователя на удаленной машине!


Что пошло не так в длинном описании ниже:

  • Как поясняется в одном из комментариев, не следует устанавливать переменную DISPLAY на удаленном хосте. Это излишество, так как сбивает с толку, как должны были отображаться графические интерфейсы.
    • Удаление строки, устанавливающей переменную DISPLAY на хосте, решило мою проблему.

Я настроил Linux Mint на получение X11Forwarding, указав следующее в / etc / ssh / sshd_config , но у меня проблемы с доступом к серверу с использованием Ubuntu 18.04.1 LTS, размещенного как WSL на Windows 10.

X11Forwarding yes
X11UseLocalhost no
AllowAgentForwarding yes
X11DisplayOffset 10
AddressFamily inet

Тем не менее, после входа в систему Linux Mint с помощью ssh -Y address_of_remote_server я не могу запускать никакие программы с графическим интерфейсом пользователя.Следующие сообщения об ошибках возникают при попытке запустить gvim во время сеанса SSH:

enter image description here

Однако я могу запустить gvim , объединив команды, например: ssh -Y address_of_remote_server gvim . Никакой ошибки не было. Посоветуйте, какой параметр нужно изменить, чтобы я мог открывать программы с графическим интерфейсом во время сеансов SSH.


Подробнее:

  • На локальном компьютере я использую дистрибутив Ubuntu, установленный как WSL в Windows 10.
    • Для X-сервера я пробовал как Xming, так и X410. Оба могут размещать (локальные) GUI-программы через порт дисплея: 127.0.0.1:0.0 (таким образом, настройка выполняется и на удаленной машине).
  • На удаленной машине Linux Mint я установил экспорт DISPLAY = 127.0.0.1: 0.0 также; команда ssh + (gvim) не работала без части 127.0.0.1 .

Обновления, с флагом -X

я должен был выбрать показ демонстрации с использованием флага -X . В моем случае подключение SSH-соединений с использованием -X и -Y идентично. Оба они установили переменную $ DISPLAY : enter image description here

Точно так же объединение оператора соединения с командой gvim дает мне живое окно Gvim. И я получаю следующую ошибку, сначала подключившись, а затем выполнив команду gvim : enter image description here


Обновления с настройкой клиента

На клиентском компьютере в ~ / .ssh / config , я установил:

host 10.0.0.168
    ForwardX11 yes
    Port 22990 #This is a fake port.
    User llinfeng
    PubKeyAuthentication yes
    IdentitiesOnly yes
    IdentityFile ~/.ssh/MyRSA_Key

Тем не менее, я не могу запускать какие-либо программы с графическим интерфейсом после входа в сеанс SSH.Опять же, запуск комбинированных команд дает полностью функциональный графический интерфейс ( ssh -X 10.0.0.168 gvim создаст окно GVIM.)

-1
задан 11 July 2019 в 05:45

2 ответа

Вы не можете вынудить клиент включить X11Forwarding путем помещения записи в любого sshd_config файл, но вместо этого должен включить ForwardX11 на клиентской машине, и для ssh нет sshd. X11Forwarding потребности, которые будут включены на сервере, но это не означает, что он осуществляется.

Можно сделать это путем редактирования Вашего ~/.ssh/config для пользователя и добавления записи Хоста для Вашего удаленного сервера:

Host theserver
Hostname 192.168.1.1
User username
ForwardX11 yes
PubKeyAuthentication yes
IdentityFile ~/.ssh/some_key
IdentitiesOnly yes

Теперь можно работать $ ssh theserver и ForwardX11 будет активно. Когда Вы используете -X/-Y флаг, Вы активируетесь ForwardX11 на клиенте, то же как путем установки конфигурации. Так или иначе необходимо будет включить ForwardX11 на клиенте, и не рекомендуется сделать это в масштабе всей системы для всех хостов, но вместо этого выборочно для каждого хоста.

Не смешивайте с DISPLAY и позвольте Вашему клиенту и системе настраивать все. Вы, вероятно, пытались зафиксировать материал и добавили, что, но удаляют его и пытаются просто использовать -X/-Y флаг, или настраивающий для Передачи X11 для определенного хоста, или с флагом во времени выполнения.

Можно читать больше о последствиях безопасности X11, Передающего здесь и в другом месте.

1
ответ дан 24 October 2019 в 00:24

Ответ так же прост как соединение с флагом-X:

ssh -X me@myserver

Это должно установить надлежащие переменные дисплея для Вас. Вы видите то, что значение похоже на это:

echo $DISPLAY

Когда я ssh в мой хост, я получаю это значение для ДИСПЛЕЯ:

localhost:10.0

У Вас может быть больше в файле конфигурации Вашего сервера, чем Вам нужно. Все, что я имею в моем, следующее:

SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no

Попытайтесь обрезать свой ssh файл конфигурации вниз к этим простым значениям.

Кроме того,-p 22 является ненужным, поскольку порт 22 является значением по умолчанию для ssh.

Здесь существует больше информации: Exchange Стека: Передайте X

Наконец, много может быть усвоено из страниц справочника:

man ssh
0
ответ дан 24 October 2019 в 00:24

Другие вопросы по тегам:

Похожие вопросы: