как ssh -Y, а затем su - <другой пользователь> и все еще пересылать X-приложения на ваш локальный компьютер

13

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

Однако, если, хотя я ssh'ed на удаленной машине, я suдругой пользователь, я не могу переслать приложение X на мою локальную машину. Это говорит wrong authentication.

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

Как я могу преодолеть эту трудность и переслать другие приложения X, которые запускаются от разных пользователей?

Причина, по которой я не пользуюсь ssh'ом напрямую, заключается в том, что я не хочу, чтобы этот пользователь был доступен через ssh (это пользователь «virtualbox», который, очевидно, является легкой целью для ботов, пытающихся подключиться к 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 добавить. Например, просто добавьте ubuntu / unix: 10 MIT-MAGIC-COOKIE-1 6b49de7c34409d5ac69beab31d12ec94
настраивается
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'ом напрямую, заключается в том, что я не хочу, чтобы этот пользователь был доступен через ssh (это пользователь «virtualbox», который, очевидно, является легкой целью для ботов, пытающихся подключиться к ssh на этот сервер) ...

Мне кажется, это не очень хорошая аргументация. «На что нацелены боты» WRT, хорошо сконфигурированный sshd, в значительной степени не имеет значения. Будут ли они где-нибудь гудеть вокруг порта 22? Видимо так. Значит ли это, что у них есть шанс на успех?

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

SSH очень безопасен при правильном использовании. Если бы это было не так, интернет-коммерция была бы невозможна. Так почему же эти боты беспокоятся? Под «правильно используемым» я подразумеваю, прежде всего, обязательные пары открытый / закрытый ключи. Если вы делаете это и уверены, что ваш закрытый ключ защищен (и вы должны это делать), будьте уверены в sshd.

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

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

Если вам надоело читать сообщения о попытках взлома, измените свой порт. Я видел здесь людей, которые пугают как «безопасность от неясности», однако, sshd, который должным образом защищен на порту 22, не будет менее безопасным на порту 57, но он не будет беспорядочно беспокоиться. Конечно, все ваши враги-дроны могут просто сканировать порты по всему IP - но знаете что? Они не Я предполагаю, что это потому, что они ищут кого-то, кто управляет системой, на которую даже не смотрели /etc/ssh/sshd_config, тем более обучались и настраивали ее.

лютик золотистый
источник
Я согласен со всем, что вы говорите. но я всегда безумно неуверен (разве это не то, чему вас учат во многих ситуациях после того, как вы обожгетесь?). Честно говоря, компьютер, на котором я пытаюсь войти, - это брандмауэр (нет доступа извне). Это ssh на высоком порте, имеет сложный пароль, но я все еще не могу помочь, но чувствую, что «virtualbox» является публичным именем. тот, который кто-то может решить включить в код бота. Ключи SSH являются прекрасным решением, особенно если они используются с защитой паролем. Но мне бы пришлось иметь при себе легкий дистрибутив Linux на USB, если бы я использовал их.
Насс