Відповіді:
Ви можете створити друге з'єднання з увімкненою переадресацією X11, а потім можете також використовувати DISPLAY
змінну середовища з другого з'єднання в першому.
У першому вікні:
$ ssh user@host
user@host$ ...
У другому вікні:
$ ssh -Y user@host 'echo $DISPLAY; while sleep 3600; do :; done'
localhost:10.0
Назад до першого вікна:
user@host$ export DISPLAY=localhost:10.0
user@host$ xterm
На жаль, ssh
не містить нічого, що містить перенаправлення X11 (або інших) до процесу / сеансу, який він розпочав, або користувачеві, який він працює, як на віддаленій машині (наприклад, за допомогою розеток Unix з / з перевірки облікових даних або з використанням просторів імен), і ці переадресації - це прості розетки для прослуховування tcp, до яких може підключитися будь-хто з віддаленої машини; вся безпека переадресації X11 покладається на аутентифікацію X11.
На сторінці sshd_config(5)
вказується, що:
відключення переадресації X11 не заважає користувачам переадресовувати трафік X11, оскільки користувачі завжди можуть встановлювати власні форвардери.
Ось як це можна зробити вручну.
Перш за все, не забудьте відключити будь-який контроль доступу на основі хоста чи користувача, який обходить механізм аутентифікації x11 [1]:
$ xhost $(xhost | sed -n /:/s/^/-/p)
access control enabled, only authorized clients can connect
Потім покажіть інформацію про автентичність DISPLAY=:0
на локальній машині:
$ xauth list :0
ohzd/unix:0 MIT-MAGIC-COOKIE-1 a86982ddce0c1e1c1a8c5e8b2846e43b
Підключіться до віддаленої машини без перенаправлення X11:
$ ssh user@hzy64
user@hzy64's password:
[motd snipped]
Відкрийте командний рядок через ~C
та додайте віддалене переадресація з порту 6000+43
в unix-сокет, що відповідає дисплею :0
:
hzy64$~C
ssh> -R 6043:/tmp/.X11-unix/X0
Forwarding port.
Встановіть $DISPLAY
envvar та додайте інформацію про автентифікацію з локальної на віддалену машину:
hzy64$ export DISPLAY=localhost:43
hzy64$ xauth add $DISPLAY . a86982ddce0c1e1c1a8c5e8b2846e43b
xauth: file /home/user/.Xauthority does not exist
Тепер ви готові піти:
hzy64$ xterm
[1] через помилково виправлену помилку керований користувачем контроль доступу за замовчуванням у Debian через /etc/X11/Xsession.d/35x11-common_xhost-local
. Гірше, що це єдиний доступний за замовчуванням в XWayland, де його також не можна вимкнути . Будь-яка програма, яка має проксі-сервери протоколу X11 (наприклад, xscope
), повинна виконати власну перевірку файлів cookie x11 (як це робить ssh), якщо тільки вона не захоче відкрити зияючий отвір для сервера X11.
-X
було б трохи краще -Y
, чи не так?
-X
, тільки з -Y
. люди не помічають цього, оскільки для багатьох систем (наприклад, debian) ForwardX11Trusted
встановлено yes
за замовчуванням, а параметри -X
та -Y
параметри еквівалентні ;-)
change $DISPLAY to
. Поточний заголовок питання не може відображатися повністю в результатах пошуку, а зміна $ DISPLAY - це дійсно частина відповіді, а не частина питання.