SSH в vagrant с настройкой X-сервера

у меня возникают проблемы с настройкой переадресации X11 на vagrant VM.

я запускаю Xming для X-сервера и шпатлевки в качестве моего SSH-клиента.

вот что я получаю, когда я запускаю vagrant ssh-config:

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2200
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/Users/MyName/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL
  ForwardAgent yes
  ForwardX11 yes

мой шпатлевки перенаправление X11 с поддержкой и Х расположение экрана 0.0.

когда я делаю echo $DISPLAY Я не получаю никакого ответа.

Я не уверен, что я настроил неправильно. Я последовал за советы in настройка моего клиента шпаклевки. Если есть более простой способ настроить VM с переадресацией X11, пожалуйста, дайте мне знать.

Для справки это содержимое моей Vagrantfile.

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.ssh.forward_agent = true
  config.ssh.forward_x11 = true

end

3 ответов


у меня была очень похожая проблема, но в моем случае это была проблема с Vagrant VM. Вот некоторые вещи, чтобы проверить:

  • X11Forwarding необходимо указать yes на /etc/ssh/sshd_config
  • включить подробный журнал для ssh (vagrant ssh -- -vvv -X в Linux у Putty также есть -v флаг командной строки) и искать интересные сообщения.

С моим бродячим VM последний показал следующее сообщение:

debug1: Remote: No xauth program; cannot forward with spoofing

после установки пакет, который обеспечивает xauth (xorg-xauth, xorg-x11-xauth или подобный), vagrant ssh -- -X работала нормально.


установите Cygwin со следующими пакетами, чтобы решить проблему, как указано в этом сайт:

  • настройка xorg-сервера
  • xinit
  • xorg-docs (для документации)
  • openssh (в случае, если это не было установлено ранее)

затем загрузите окно с помощью startxwin с терминала cygwin.

примечание, которое я обнаружил позже, заключается в том, что лучше ssh в vagrant, используя следующее команда:

vagrant -Y ssh

чем:

vagrant -X ssh

последнее выполняется в ненадежном режиме, как в этом ответ и через некоторое время.


используйте "startxwin"для запуска сервера cygwin X. Используйте putty или клиент cygwin ssh для ssh на гостевой виртуальной машине.

Если вы используете cygwin ssh, сделайте "export DISPLAY=: 0" перед запуском ssh (т. е. "vagrant ssh -- -vvv-X").

для putty: запустите "startxwin -- - listen tcp", включите пересылку ssh-X11 в конфигурации соединения putty, установите" X display location "в" localhost:0 " и установите правильный путь .Файл Xauthority (обзор, вероятно, находится в вашем домашнем каталоге; выход startxwin скажет вам, где).

возможно, не используйте msys2 ssh (установленная по умолчанию среда vagrant-msys2, но vagrant также отлично работает под cygwin) с сервером cygwin X. (подробнее о том, почему)

детали:

Если вы получаете " connect/tmp/.X11-unix/X0: нет такого файла или каталога "(в режиме SSH verbose) или putty error "Putty X11 proxy: невозможно подключиться к перенаправленному X-серверу: ошибка сети: соединение отказано", попробуйте использовать сокеты tcp, а не сокеты домена unix по умолчанию.

при запуске Cygwin X server перейдите в раздел "X-listen tcp-multiwindow" (multiwindow не является обязательным - он открывает новые окна для каждого приложения).

при использовании openssh " ssh "из командной строки: перед переходом" vagrant ssh -- -vvv-X "перейдите в" export DISPLAY=localhost:0 "(не": 0", а" localhost:0", поэтому он использует tcp). Я запускаю Git bash, который использует msys2, который, похоже, не связывается должным образом с моим сервером cygwin X эмулированные доменные сокеты unix. Но если я использую "vagrant ssh -- - X" под моей подсказкой cygwin (с DISPLAY=:0 для сокетов домена unix), он работает.

отличный источник информации:http://dustwell.com/how-x-over-ssh-really-works.html

кроме того, вы можете добавить "config.тсс.forward_x11 = true " для вашего Vagrantfile. Я думаю, что это устанавливает X11Forwarding в /etc/ssh / sshd_config при настройке гостевой виртуальной машины или запуске "vagrant reload". - https://coderwall.com/p/ozhfva/run-graphical-programs-within-vagrantboxes

Update: Не рекомендуется запускать X без безопасности xauth (как показано выше). Это небезопасно. Например, другие компьютеры в той же локальной сети могут подключаться к x-серверу через tcp и обнюхивать нажатия клавиш с помощью xkeys. Используйте " startxwin "вместо запуска X напрямую, поэтому он использует опцию"- auth " XWin. Это затрудняет мне получение моего msys2 ssh для перенаправления X на мой cygwin X сервер. Журнал ssh при подключении говорит, что он не может найти команду xauth - это потому, что она отсутствует в моей среде msys2. Cygwin ssh X-redirection по-прежнему работает нормально. Замазка отлично работает, пока вы устанавливаете .Путь к файлу Xauthority (вероятно, он находится прямо в вашем домашнем каталоге)в конфигурации сеанса putty.

Я обнаружил, что проблема/решение сокета tcp/unix-домена на самом деле находится в faq cygwin (этот faq довольно полезен и имеет много информации):

6.7. Икс сеансы, перенаправленные PuTTY, не могут подключиться. Не-cygwin локальные клиенты X не могут подключиться.

сервер X теперь использует-nolisten tcp по умолчанию, что повышает безопасность сервера X, не открывая сокет TCP/IP, только локальный (домен UNIX) сокет. Приложения, отличные от cygwin, не могут подключиться к этому сокету.

https://x.cygwin.com/docs/faq/cygwin-x-faq.html