Пересилання X11 через SSH, якщо конфігурація сервера не дозволяє


10

Розгляньте ситуацію, коли я входжу через SSH з машини A на машину B, у мене на X-сесії є X сеанс, і я хочу запустити програму X на B.

ssh -X Bробить цю роботу прозорою. Але що робити, якщо не вистачає конфігурації сервера X11Forwarding yes, у мене немає дозволів root на сервері, а адміністратор сервера байдужий?

Очевидно, що можливо переслати X11-з'єднання, оскільки я можу передавати все, що хочу, через канал SSH. Насправді, якщо локальний X-сервер дозволяє з'єднання TCP, це так само просто ssh -R 6010:localhost:6000( як і коригувати для відображуваних номерів). А що з поширеним випадком, коли локальний сервер X дозволяє лише з'єднання сокетів? Як зробити переадресацію X зручно та безпечно, з мінімальними вимогами до встановлення (особливо на B)?

Відповіді:


2

Відповідь @Demi хороша, але я думаю, що її заповнення буде дуже корисною.

  • local - локальна машина, що обслуговує Xserver.
  • remote - віддалена машина, що обслуговує додаток, який передає дані, що надходять до Xserver

Віддалене /etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

Віддалений ~/.Xauthorityпустий або не існує

Місцеві:

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

У тесті, локальний під керуванням Ubuntu 18.05, дистанційним керував Debian Jesse.


6

Чи розмовляє протокол X11 під час розмови з порту tcp при розмові з сокетом?

Можливо, ви могли б поєднати запропоноване вами власне використання ssh -R 6010:localhost:6000для перенесення даних X11 у перенаправлення порту, а потім з'єднайте локальну датчик між портом tcp та слухачем сокетів X11 з nc на зразок:

nc -l -p 6000 > /tmp/.X11-unix/X0

Так, це ідея. Але я сподівався на відповідь, сказавши: "покладіть це на .ssh/configсторону свого клієнта .profile, а потім на вашу сторону сервера, а потім просто запустіть ssh B".
Жил 'ТАК - перестань бути злим'

1
Існує проста відповідь "помістіть це у свою конфігурацію". Проблема полягає в тому, що ви виключаєте це у вашій кваліфікаційній запитанні, оскільки потрібна опція перебуває в стороні sshd_config у речах B. Ви намагаєтеся обійти блок, що вводиться місця, щоб зробити це важко ненароком відкрити питання безпеки.
Калеб

3
Я націлююсь на (на мій досвід дуже поширений) випадок, коли адміністратор не піклується і просто залишив налаштування за замовчуванням. Пересилка X11 не заборонена політикою, це просто незручність через байдужість сидсмена. У будь-якому випадку перенаправлення X11 дозволяє серверу атакувати клієнта, тому заборона його на стороні сервера не має особливого сенсу.
Жил "ТАК - перестань бути злим"

@Gilles Я погоджуюся, що дефолт насправді не захищає від нічого корисного. Тож чи варто лобіювати змінити типовий режим за течією?
Калеб

Для мене /tmp/.X11-unix/X0це сокет домену unix, а не FIFO, тому будь-яка спроба перенаправлення закінчується ENXIO: No such device.
Samveen

2
  1. Спініруйте додатковий X-сервер за допомогою Xephyr. Це для безпеки - це заважає віддаленій системі компрометувати вашу.

  2. Використовуйте SSH, щоб переслати дистанційну розетку до гнізда Xephyr. SSH також підтримує переадресацію сокетів Unix.

  3. Встановіть змінні середовища на віддаленому сервері правильно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.