як ssh -Y, а потім su - <інший користувач> і все-таки пересилати X програми на локальну машину


13

Досить просто «взяти» (тобто намалювати локально) віддалено запущене додаток для Linux: Якщо я ssh -Yна віддаленій машині і запускаю програму, цього додатка, безумовно, вистачить на моєму локальному робочому столі.

Однак, якщо я перебуваю на віддаленій машині, я suіншому користувачеві, я не можу переслати програму X на свою локальну машину. Це говорить wrong authentication.

Я не впевнений, як вирішити цю справу. Це echo $DISPLAYвсе ще правильно (встановлено початковим ssh -Yвходом), але cookie сеансу, ймовірно, встановлено лише для початкового користувача, який увійшов у ssh.

Як я можу подолати цю складність та переслати інші X програми, які запускаються від різних користувачів?

Причина, що я не ssh'ing безпосередньо, полягає в тому, що я не хочу, щоб цей користувач був доступний через ssh (це "віртуальний" користувач, який, очевидно, є легкою ціллю для ботів, які намагаються перенести ssh на цей сервер) ...

Відповіді:


12

Під час підключення до машини для видалення через ssh з увімкненою переадресацією X11, ssh на сервері створює .Xauthorityфайл у домашній директорії користувача. Оскільки ssh слухає X11 на сокеті TCP, кожен може підключитися. Оскільки будь-хто може підключитися, нам потрібен певний спосіб не допустити, щоб хтось користувався вашим дисплеєм. Це робиться з цим .Xauthorityфайлом. Файл містить "cookie", який подається на сервер X11, який підтверджує, що клієнту слід дозволити підключення.

Пропускаючи всі деталі, якщо ви скопіюєте цей .Xauthorityфайл у домашній каталог вашого цільового користувача (і надаєте їм право власності), ви зможете підключитися.


Варто зазначити, що навіть після цього змінну DISPLAY потрібно встановити правильно після переключення користувачів. Це може бути проблемою при використанні "sudo", який може відфільтрувати навколишнє середовище.
Кріс Аргуін

8
  1. ssh -Y до віддаленої машини, як себе.
  2. Потрапивши туди, наберіть xauth list. З'являється список елементів MAGIC-COOKIE. Найімовірніше, ваш сеанс входу в систему є найнижчим у списку. (Перевірте це, переглянувши ім'я хоста та номер коду UNIX та порівняйте його з іменем хоста, від якого ви захищені, та вашим поточним localhost: ## DISPLAY env. Змінною.)
  3. Переключення користувачів.
  4. Введіть xauth add+ увесь рядок MAGIC-COOKIE зверху.
  5. Графіка повинна з’явитися зараз. Перевірте це швидко xlogo.

2
немає "+" у xauth add. Наприклад, просто додайте ubuntu / unix: 10 MIT-MAGIC-COOKIE-1 6b49de7c34409d5ac69beab31d12ec94
Tuntable

1
USER="otherusername" && MAGIC_COOKIE=`xauth list | tail -n1` && su -c "xauth add $MAGIC_COOKIE" $USER && su - $USER
7yl4r

3

Мені подобається відповідь Ренді, але це не дуже спрацювало для мене.

Ось що я взяв на роботу:

  1. ssh -Y as user1
  2. xauth list | grep `uname -n`
  3. Перехід на user2
  4. unset XAUTHORITY
  5. xauth generate :0 .
  6. xauth add :0 . <KEY-FROM-STEP-2>

Зверніть увагу на два періоди в кроках 5 і 6.

Якщо я просто дотримуюся відповіді Ренді, XAUTHORITYзмінна user2 все ще вказує на .Xauthorityфайл user1 . І його синтаксис ключа + не працював.


2

Це не відповідь, тому якщо ви знайдете її, очевидно, що це краще.

Якщо ні, і це першопричина вашої загадки:

Причина, що я не ssh'ing безпосередньо, полягає в тому, що я не хочу, щоб цей користувач був доступний через ssh (це "віртуальний" користувач, який, очевидно, є легкою ціллю для ботів, які намагаються перенести ssh на цей сервер) ...

Мені це здається не великим міркуванням. "На що націлюють ботів" WRT добре налаштований sshd в значній мірі не має значення. Чи будуть вони гуляти біля порту 22 всюди десь? Мабуть, так. Чи означає це, що вони насправді мають шанс на успіх?

Спробуйте гуглити навколо, щоб розповісти про когось, у кого випадковий анонімний бот успішно пробився в sshd. Я впевнений, що це, мабуть, сталося з кимось десь (і, звичайно, ви, можливо, ніколи не знаєте), але я не можу знайти жодного повідомлення про таке. Було б цікаво прочитати, що таке використовувана конфігурація.

SSH дуже безпечний при правильному використанні. Якби не, інтернет-торгівля була б нездійсненною. То чому ж такі боти турбують? Під "правильним використанням" я маю на увазі, в першу чергу, обов'язкові пари відкритих / приватних ключів. Якщо ви це зробите і впевнені, що ваш приватний ключ захищений (і вам слід бути таким), будьте впевнені в sshd.

Я думаю, що причина всіх «спроб на злам» взагалі трапляється в тому, що існує велика кількість користувачів, які не роблять таких питань, як запитання щодо U&L;) і не читають сторінки інструкцій та користуються захистом пароля поодинці, що схоже на те, щоб залишити свою банкоматну картку в машині десь із табличкою із написом: "Відгадай!".

Однак якщо ви вважаєте, що ваш приватний ключ, як ваша картка банкоматів, - як щось, що ви фізично захищені вами (що це, по суті, є), то ціль стає набагато набагато ефірнішою. Все, що вони можуть зробити, - це довести, що так, справді знадобиться тисячі машин тисячі років, щоб спільно працювати 2048-бітним ключем.

Якщо вам не подобається читати звіти про спроби взлому, змініть свій порт. Я бачив, як люди тут поо-poo вважають це "захистом від незрозумілості", проте sshd, який належним чином захищений на порту 22, не буде менш безпечним на порту 57, але він не буде випадково турбуватися. Звичайно, всі ваші ворожі безпілотники могли просто порту сканувати весь IP - але ви знаєте, що? Вони ні. Я б припустив, що це тому, що вони шукають - це хтось, хто працює за системою, хто навіть не дивився на них /etc/ssh/sshd_config, набагато менш освічений і налаштовував його.


Я згоден з усім, що ви говорите. але я завжди шалено незахищений (чи не те, чого вони навчають вас у багатьох ситуаціях після того, як ви отримаєте опік?). Якщо чесно, ПК, на який я намагаюся увійти, є брандмауером (доступу ззовні немає). Це ssh на високому порту, має складний пароль, але я все одно не можу не відчувати, що "virtualbox" - це публічне ім'я. той, який хтось десь може вибрати для включення в ботовий код. SSH ключі - прекрасне рішення, особливо якщо вони використовуються із захистом паролем. Але я повинен був би мати з собою легкий дистрибутив Linux на usb, якби я користувався ними.
nass
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.