SSH – Как сделать приложения X на клиенте?

У меня есть обратная проблема, с которой, похоже, сталкиваются большинство людей. Если я запускаю приложение X во время входа в ssh, оно отображается на сервере (хосте) вместо клиента (локального). Это команда, которую я использую

$ ssh -X -p 6623 pinker@192.168.0.200 

Моя переменная $ DISPLAY отображается корректно на клиенте.

 $ echo $DISPLAY :0 

Я хочу, чтобы приложения X с сервера отображались локально на клиенте (машина, на которой я физически). Я не знаю, что вызывает это.

2 Solutions collect form web for “SSH – Как сделать приложения X на клиенте?”

Ради этой беседы можно сказать, что есть 2 машины под названием lappy и remotey . Система lappy – это то, откуда вы будете запускать свои команды ssh . Система, к которой вы подключаетесь, является remotey .

1. Отображать графические интерфейсы от remotey на lappy

  lappy .-,( ),-. __ _ .-( )-. remotey [__]|=| ---->( network )------> ____ __ /::/|_| '-( ).-' | | |==| '-.( ).-' |____| | | /::::/ |__| NOTE: on lappy, `ssh` to remotey, run GUI, see GUI on lappy 

Конфигурационные файлы вашей оболочки, вероятно, устанавливают переменную среды DISPLAY=:0 . Вы можете использовать grep для этого так:

  $ grep DISPLAY $HOME/{.bash*,.profile*} 

Если это ничего не возвращает, система, в которую вы входите, вероятно, является виновником. Также загляните в этот каталог.

  $ grep DISPLAY /etc/profile.d/* /etc/bash* 

Если вы хотите просто оставить это, вы можете переопределить это поведение, поручив ssh перенаправить X-трафик обратно в вашу клиентскую систему, например:

 $ ssh -X user@remoteserver 

пример

Здесь у меня есть удаленный сервер, у которого есть $DISPLAY , установленный в :0 аналогичный вашему.

 $ ssh -X skinner "echo $DISPLAY" :0 

Но неважно, я все еще могу вызвать X-приложения и показать их удаленным в моей системе, которые выполняют команды ssh . Мне даже не нужно входить в систему, я просто могу запустить GUI прямо так:

 $ ssh -X skinner xeyes 

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

 $ ssh -c arcfour,blowfish-cbc -X skinner xeyes 

2. Отображение GUI на удаленном

  lappy .-,( ),-. __ _ .-( )-. remotey [__]|=| ---->( network )------> ____ __ /::/|_| '-( ).-' | | |==| '-.( ).-' |____| | | /::::/ |__| NOTE: on lappy, `ssh` to remotey, run GUI, see GUI on remotey 

Если вы SSH'ing в remotey от lappy но хотели бы, чтобы графические интерфейсы отображались на lappy , просто lappy переключатель -X из вашего ssh invoke.

 $ ssh -p 6623 pinker@192.168.0.200 

3. Устранение $ HOME / .ssh / config

Часто пользовательский $HOME/.ssh может ввести неизвестные сведения о том, что происходит. Вы можете временно отключить использование файла config в этом каталоге, например, при выполнении тестов.

 $ ssh -F /dev/null -p 6623 pinker@192.168.0.200 

4. Устранение конфигураций удаленной оболочки

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

 $ ssh -t -X -p 6623 pinker@192.168.0.200 "bash --norc --noprofile" 

С приведенным выше, ни одна из настроек не должна поступать в эту оболочку Bash, поэтому вы должны либо установить DISPLAY=:0 затем отобразить графические интерфейсы на рабочем столе Remotey.

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

 $ ssh -t -X -p 6623 pinker@192.168.0.200 "bash --norc" 

Затем выполните следующую команду:

 $ ssh -t -X -p 6623 pinker@192.168.0.200 "bash --noprofile" 

В первой версии вы узнаете, находится ли проблема в вашей /etc/bashrc & $HOME/.bashrc цепочке конфигурационных файлов, а вторая версия сообщит вам, находится ли проблема в файле конфигурации $HOME/.bash_profile .

Ключевой проблемой здесь является :0 в последней строке:

 $ ssh -X -p 6623 pinker@192.168.0.200 $ echo $DISPLAY :0 

Это говорит о том, что что-то на ssh-сервере переопределяет вашу переменную среды DISPLAY после того, как sshd устанавливает ее. Поскольку на вашем компьютере работает X-сервер :0 , любые запросы, которые X-клиенты делают на этом компьютере, отправляются на локальный (то есть ssh-сервер) X-сервер. Если вы запустили сервер ssh-server X (sic!) На другом дисплее, вы получите

 $ xclock Error: Can't open display: :1 

Есть много мест, где все может пойти не так, для начала я бы предложил изменить вашу команду соединения, чтобы вызвать оболочку без какой-либо инициализации. Не забудьте использовать параметр -t для принудительного распределения tty. Для BASH команда может выглядеть так:

 $ ssh -X -p 6623 -t pinker@192.168.0.200 /bin/bash --norc --noprofile 

Затем проверьте значение DISPLAY .

  • Сервер Xorg не запускается
  • syndaemon не будет отключать тачпад при наборе текста
  • OEL6 Медленная загрузка && Миллионы файлов сокетов в / tmp / orbit-gdm
  • Двухканальные мониторы Gentoo
  • Сценарий оболочки: найдите выделенные программы, если они есть, активируйте его
  • Разделение дисплея среди компьютеров
  • Как переопределить пользовательский курсор мыши с помощью Xcursor?
  • Почему мой X-сервер не будет запускаться как обычный пользователь?
  • Как остановить nvidia-настройки, создающие новый xorg.conf?
  • Использование gdm для управления аутентификацией xdmcp через VNC
  • Можно ли управлять несколькими мониторами с одного CRTC?
  • Linux и Unix - лучшая ОС в мире.