Как перенаправить X поверх SSH для удаленного запуска графических приложений?

У меня есть машина, на которой работает Ubuntu, с которой я SSH, с моей машины Fedora 14. Я хочу отправить X из машины Ubuntu обратно в Fedora, чтобы удаленно запускать графические программы. Обе машины находятся в локальной сети.

Я знаю, что опция -X позволяет пересылать X11 в SSH, но я чувствую, что мне не хватает некоторых шагов.

Каковы требуемые шаги для пересылки X из машины Ubuntu в Fedora через SSH?

8 Solutions collect form web for “Как перенаправить X поверх SSH для удаленного запуска графических приложений?”

Пересылка X11 должна быть включена как на стороне клиента, так и на стороне сервера.

На стороне клиента параметр -X (столица X) для ssh включает пересылку X11, и вы можете сделать это по умолчанию (для всех подключений или для конкретного коннекта) с ForwardX11 yes в ~/.ssh/config .

На стороне сервера X11Forwarding yes должен X11Forwarding yes в /etc/ssh/sshd_config . Обратите внимание, что по умолчанию нет пересылки (некоторые дистрибутивы включают его по умолчанию /etc/ssh/sshd_config ) и что пользователь не может переопределить этот параметр.

Программа xauth должна быть установлена ​​на стороне сервера. Если есть какие-либо программы X11, очень вероятно, что xauth будет xauth . В маловероятном случае, когда xauth был установлен в нестандартном месте, его можно вызвать через ~/.ssh/rc (на сервере!).

Обратите внимание, что вам не нужно устанавливать какие-либо переменные среды на сервере. DISPLAY и XAUTHORITY будут автоматически установлены на их собственные значения. Если вы запустите ssh и DISPLAY не установлен, значит ssh не переадресовывает соединение X11.

Чтобы подтвердить, что ssh пересылает X11, проверьте строку, содержащую Requesting X11 forwarding на выходе ssh -v -X . Обратите внимание, что сервер не будет отвечать в любом случае.

Чтобы получить пересылку X11, работающую над ssh, вам понадобятся 3 вещи.

  1. Ваш клиент должен быть настроен для пересылки X11.
  2. Ваш сервер должен быть настроен для пересылки X11.
  3. Ваш сервер должен иметь возможность настроить аутентификацию X11.

Если у вас есть # 1 и # 2 на месте, но отсутствуют # 3, вы получите пустую переменную окружения DISPLAY.

Суп-к-орехам, вот как получить переадресацию X11.

  1. На вашем сервере убедитесь, что / etc / ssh / sshd_config содержит:

     X11Forwarding yes X11DisplayOffset 10 

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

     cat /var/run/sshd.pid | xargs kill -1 
  2. На вашем сервере убедитесь, что у вас установлен xauth.

     belden@skretting:~$ which xauth /usr/bin/xauth 

    Если вы не установили xauth, вы столкнетесь с «пустой переменной среды DISPLAY».

  3. На вашем клиенте подключитесь к вашему серверу. Обязательно скажите ssh, чтобы разрешить пересылку X11. я предпочитаю

     belden@skretting:~$ ssh -X blyman@the-server 

но вам может понравиться

  belden@skretting:~$ ssh -o ForwardX11=yes blyman@the-server 

или вы можете установить это в своем файле ~ / .ssh / config.


Сегодня я столкнулся с этой пустой переменной среды DISPLAY, когда ssh'ing на новый сервер, который я не администрирую. Следить за отсутствующей частью xauth было немного забавно. Вот что я сделал, и что вы можете сделать тоже.

На моей локальной рабочей станции, где я являюсь администратором, я проверил, что / etc / ssh / sshd_config настроен для пересылки X11. Когда я снова подключу ssh -X к localhost, я правильно установил свой DISPLAY.

Принуждение DISPLAY к сбою не было слишком сложным. Мне просто нужно было посмотреть, что делали sshd и ssh, чтобы правильно настроить его. Вот полный вывод всего, что я сделал по пути.

  blyman@skretting:~$ mkdir ~/dummy-sshd blyman@skretting:~$ cp -r /etc/ssh/* ~/dummy-sshd/ cp: cannot open `/etc/ssh/ssh_host_dsa_key' for reading: Permission denied cp: cannot open `/etc/ssh/ssh_host_rsa_key' for reading: Permission denied 

Вместо того чтобы использовать sudo для принудительного копирования моих файлов ssh_host_ {dsa, rsa} _key, я использовал ssh-keygen для создания фиктивных для себя.

  blyman@skretting:~$ ssh-keygen -t rsa -f ~/dummy-sshd/ssh_host_rsa_key Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/blyman/dummy-sshd/ssh_host_rsa_key. Your public key has been saved in /home/blyman/dummy-sshd/ssh_host_rsa_key.pub. 

Прополощите и повторите с -t dsa:

  blyman@skretting:~$ ssh-keygen -t dsa -f ~/dummy-sshd/ssh_host_dsa_key # I bet you can visually copy-paste the above output down here 

Edit ~ / dummy-sshd / sshd_config, чтобы указать на правильные новые файлы ключей ssh_host.

  # before blyman@skretting:~$ grep ssh_host /home/blyman/dummy-sshd/sshd_config HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key # after blyman@skretting:~$ grep ssh_host /home/blyman/dummy-sshd/sshd_config HostKey /home/blyman/dummy-sshd/ssh_host_rsa_key HostKey /home/blyman/dummy-sshd/ssh_host_dsa_key 

Запустите sshd на новом порту в режиме без отсоединения:

  blyman@skretting:~$ sshd -p 50505 -f ~/dummy-sshd/sshd_config -d sshd re-exec requires execution with an absolute path 

Упс, лучше исправьте этот путь:

  blyman@skretting:~$ /usr/sbin/sshd -p 50505 -f ~/dummy-sshd/sshd_config -d debug1: sshd version OpenSSH_5.5p1 Debian-4ubuntu6 debug1: read PEM private key done: type RSA debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048 debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048 debug1: private host key: #0 type 1 RSA debug1: read PEM private key done: type DSA debug1: Checking blacklist file /usr/share/ssh/blacklist.DSA-1024 debug1: Checking blacklist file /etc/ssh/blacklist.DSA-1024 debug1: private host key: #1 type 2 DSA debug1: setgroups() failed: Operation not permitted debug1: rexec_argv[0]='/usr/sbin/sshd' debug1: rexec_argv[1]='-p' debug1: rexec_argv[2]='50505' debug1: rexec_argv[3]='-f' debug1: rexec_argv[4]='/home/blyman/dummy-sshd/sshd_config' debug1: rexec_argv[5]='-d' Set /proc/self/oom_adj from 0 to -17 debug1: Bind to port 50505 on 0.0.0.0. Server listening on 0.0.0.0 port 50505. debug1: Bind to port 50505 on ::. Server listening on :: port 50505. 

Поп новый терминал и ssh в localhost на порт 50505:

  blyman@skretting:~$ ssh -p 50505 localhost The authenticity of host '[localhost]:50505 ([::1]:50505)' can't be established. RSA key fingerprint is 81:36:a5:ff:a3:5a:45:a6:90:d3:cc:54:6b:52:d0:61. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[localhost]:50505' (RSA) to the list of known hosts. Linux skretting 2.6.35-32-generic #67-Ubuntu SMP Mon Mar 5 19:39:49 UTC 2012 x86_64 GNU/Linux Ubuntu 10.10 Welcome to Ubuntu! * Documentation: https://help.ubuntu.com/ 1 package can be updated. 0 updates are security updates. Last login: Thu Aug 16 15:41:58 2012 from 10.0.65.153 Environment: LANG=en_US.UTF-8 USER=blyman LOGNAME=blyman HOME=/home/blyman PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games MAIL=/var/mail/blyman SHELL=/bin/bash SSH_CLIENT=::1 43599 50505 SSH_CONNECTION=::1 43599 ::1 50505 SSH_TTY=/dev/pts/16 TERM=xterm DISPLAY=localhost:10.0 Running /usr/bin/xauth remove unix:10.0 /usr/bin/xauth add unix:10.0 MIT-MAGIC-COOKIE-1 79aa9275ced418dd445d9798b115d393 

Посмотрите на последние три строки. Я случайно установил DISPLAY и имел эти две красивые линии из / usr / bin / xauth.

Оттуда была детская игра, чтобы отодвинуть мой / usr / bin / xauth в /usr/bin/xauth.old, отключиться от ssh и остановить sshd, а затем запустить sshd и ssh обратно в localhost.

Когда / usr / bin / xauth не было, я не видел DISPLAY, отраженного в моей среде.


Здесь ничего блестящего. В основном мне посчастливилось выбрать разумный подход, чтобы попытаться воспроизвести это на моей локальной машине.

Исправление состоит в том, чтобы добавить эту строку в ваш /etc/ssh/sshd_config :

 X11UseLocalhost no 

https://joshua.hoblitt.com/rtfm/2013/04/how_to_fix_x11_forwarding_request_failed_on_channel_0/

Убедись, что:

  • На xauth установлен xauth (см .: xauth info / xauth list ).
  • На сервере ваш файл /etc/ssh/sshd_config имеет следующие строки:

     X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost no 
  • На стороне клиента ваш файл ~/.ssh/config имеет следующие строки:

     Host * ForwardAgent yes ForwardX11 yes 
  • На клиентской стороне у вас установлен X-сервер (например, macOS: XQuartz; Windows: Xming).


Затем, чтобы выполнить пересылку X11 с использованием SSH, вам нужно добавить -X в свою команду ssh , например

 ssh -v -X user@host 

затем убедитесь, что ваш DISPLAY не пуст:

 echo $DISPLAY 

Если это так, то с параметром verbose для ssh ( -v ) проверьте любые предупреждения, например

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

Если у вас есть ненадежный X11, как показано выше, тогда вместо этого попробуйте флаг -Y (если вы доверяете хосту):

 ssh -v -Y user@host 

См. « Что означает« Предупреждение: неудачная настройка переадресации X11: сбой данных ключа xauth не генерируется »означает, что когда ssh'ing с -X?


Если вы предупреждаете: нет данных xauth , вы можете попытаться создать новый файл .Xauthority , например

 xauth generate :0 . trusted xauth list 

См.: Создание / восстановление нового файла .Xauthority.


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


Для меня проблема была в опции nodev mount для файловой системы / tmp. X11 нуждается в специальном файле, который будет создан там.

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

Добавьте X11UseLocalhost no в /etc/ssh/sshd_config и перезапустите SSH-сервер.

Если вы не получите DISPLAY, проверьте правильность установки xauth, а затем повторите попытку.

RHE / CEntos не имеет этой проблемы, это вещь Ubuntu!

X11Forwarding должен быть установлен на сервере SSH (в вашем случае в поле Ubuntu) в sshd_config , и вы должны разрешить пересылку X11 для клиента SSH (поле Fedora), передав параметр -X или отредактировав файл ssh_config чтобы добавить по умолчанию ForwardX11 .

Предоставление Ubuntu bash в Windows 10 запускать ssh -X для создания среды GUI на удаленном сервере

  • Первый

Установите все следующее. В окне установите Xming . В Ubuntu bash используйте sudo apt install для установки ssh xauth xorg .

 sudo apt install ssh xauth xorg 
  • второй

Перейти к папке содержит файл ssh_config , мой /etc/ssh .

  • В третьих

Измените ssh_config как администратор (USE sudo ). Внутри ssh_config удалите хэш # в строках ForwardAgent , ForwardX11 , ForwardX11Trusted и установите соответствующие аргументы в yes .

 # /etc/ssh/ssh_config Host * ForwardAgent yes ForwardX11 yes ForwardX11Trusted yes 
  • вперед

В файле ssh_config удалите передний хэш # перед Port 22 и Protocol 2 , а также добавьте новую строку в конце файла, чтобы указать местоположение файла XauthLocaion /usr/bin/xauth , XauthLocaion /usr/bin/xauth , помните, пишите свой собственный путь к xauth файл.

 # /etc/ssh/ssh_config # IdentifyFile ... Port 22 Protocol 2 # Cipher 3des # ... # ... ... ... GSSAPIDelegateCredentials no XauthLocaion /usr/bin/xauth 
  • пятый

Теперь, когда мы закончили редактирование файла ssh_config , сохраните его, когда мы покинем редактор. Теперь перейдите в папку ~ или $HOME , добавьте export DISPLAY=localhost:0 в ваш .bashrc файл и сохраните его.

 # ~/.bashrc ... ... export DISPLAY=localhost:0 
  • Последний

Мы почти закончили. Перезапустите оболочку bash, откройте свою программу Xming и используйте ssh -X yourusername@yourhost . Затем наслаждайтесь графическим интерфейсом.

 ssh -X yourusername@yourhost 

Проблема также в подсистеме Ubuntu в Windows, и ссылка находится в

https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776

  • Отключить сенсорную панель ELAN при запуске
  • Могу ли я использовать вывод Synaptics в KVM?
  • Xorg: несколько клавиатур, одна конфигурация
  • xkb: назначить новый уровень сдвига для функциональных клавиш
  • Невозможно изменить геометрию по умолчанию vncserver
  • Возможно ли настроить «масштабированный» рабочий стол в xorg.conf, аналогичный использованию опции xrandr scale-from?
  • Надежная и постоянная установка драйвера Nvidia на Centos 5
  • Ошибка startx при настройке X-сервера на archlinux
  • Как получить выход X на двух неодинаковых картах nVidia
  • Драйвер виртуальной мыши, возможные проблемы X11
  • Thinkpad x201 Tablet, вращающийся экран
  • Interesting Posts

    Автоматически определять, когда файл достиг предела размера

    Резервное копирование / восстановление полного VPS, не может загружаться с живых медиа

    Каков наилучший подход к копированию каталогов?

    Есть ли один вкладыш, который может отображать отпечатки с открытым ключом с помощью authorized_keys в качестве входных данных?

    Как остановить Fedora от уведомления меня об обновлениях nodejs?

    Как bash интерпретирует равный оператор без окружающих пространств в условном?

    ssh-add не поддерживается между перезагрузками

    Из сценария оболочки выполните другой с аргументами и получите код возврата

    Как получить информацию о цвете фона в Xwindows

    Как исключить каталоги с пробелами через PRUNEPATHS локатора?

    Почему не «cvs –help | меньше работы?

    Ошибка установки vboxdrv в debian

    Debian Jessie не смог прочитать blu-ray

    Неудовлетворенная зависимость после обновления дистрибутива linux mint

    Отправлять связь по сети с сервера на клиент

    Linux и Unix - лучшая ОС в мире.