Проблема с туннелированием X с удаленной машины

Проблема с туннелированием X с удаленной машины

Я пытаюсь туннелировать x window. Если сделать:

user@local: ssh -X user@remote  xclock

это работает. Однако если я сначала войду в систему, а затем запущу программу, то она не работает.

user@local: ssh -X user@remote

user@remote: xclock
No protocol specified
Error: Can't open display: :0

Что пошло не так?

Редактировать

Я проверил $DISPLAYпеременную на пульте дистанционного управления:

user@local: ssh -X user@remote "echo $DISPLAY"
:0.0

Установка того же значения на пульте дистанционного управления после входа в систему не работает. Установка $DISPLAYна :10.0предложенное работает.

user@local: ssh -X user@remote
user@remote: DISPLAY=:10.0 xclock

Я все еще не понимаю, зачем мне нужны разные значения $DISPLAY для интерактивного и неинтерактивного сеанса.

решение1

Проверьте, что переменнаяОТОБРАЖАТЬбыть правильно настроенлокальный хост:10.0. Если это не так,

export DISPLAY=localhost:10.0 

, тогда попробуйтеxclockснова.

Но почему мне нужно, чтобы «DISPLAY» был равен 10,0, а не 0,0?

TheX-сервер(илиX-окно, илиХ11) это именно то, что сервер, ожидающий, когда приложения подключатся к нему, чтобы отобразить их. Это происходит на вашем ПК, где приложения подключаются к X-серверу через сокет, расположенный в/тмп, обычно называемый/tmp/.X11-unix. Однако, как и все серверы,Х11можно связаться с удаленных ПК и графически отобразить приложения, работающие на удаленных ПК.

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

Теперь введитесш, что вместо этого делает это безопасным: это-Y/-Xвариантсшкоторый безопасно обрабатывает (также шифруя трафик) все детали открытия вашего локального сервера X11 для удаленного приложения. Однако, когда вы хотите отобразитьудаленныйxclock локально, вы должны указать удаленному приложению, что сервер X11, к которому необходимо подключиться, не является его собственным сервером X11, а находится на удаленном компьютере (том, с которого вы запустилисшсессия). Так чтоxclockдолжен отправить свой выводнетк локальной розетке в/тмпа к сетевому порту (это127.0.0.1:6010, которыйсшмилостиво сокращается долокальный хост:10), из которогосшпозаботится об отправке его обратно на ваш локальный ПК, где в конечном итоге вывод будет отображен в графическом виде.

Если вы не хотите, чтобы различные ssh-подключения (у вас их может быть несколько) были разделены10единицы, как влокальный хост:10.0, локальный хост:20.0, ...) вам следует изменить утверждение

X11DisplayOffset 10

в/etc/ssh/sshd_configна что угодно (хотя, честно говоря, я не вижу для этого никаких причин).

Именно это утверждение делает удаленные дисплеи доступными.нетв порту6000(что было былокальныйхост:0.0), но на порту6010. Вы можете проверить это сами:

$ ssh -Y vps
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Apr 17 02:47:42 2017 from 
root@vps:~# ss -lntp | grep 6010
LISTEN     0      0                 127.0.0.1:6010                     *:*      users:(("sshd",16172,8))
LISTEN     0      0                       ::1:6010                    :::*      users:(("sshd",16172,7))

Связанный контент