Назад | Перейти на главную страницу

Доступ к SSH_AUTH_SOCK от другого пользователя без полномочий root

Сценарий:

Я запускаю ssh-agent на своем локальном ПК, и все мои серверы / клиенты настроены для пересылки аутентификации агента SSH. Я могу переключаться между всеми моими машинами с помощью ssh-agent на моем локальном ПК. Это работает.

Мне нужно уметь SSH к машине как я (user1), перейдите на другого пользователя с именем user2 (sudo -i -u user2), а затем ssh в другой ящик, используя ssh-agent, который у меня запущен на моем локальном ПК. Допустим, я хочу сделать что-то вроде ssh user3 @ machine2 (при условии, что у пользователя user3 есть мой открытый SSH-ключ в их файле authorized_keys).

у меня есть судо настроен так, чтобы SSH_AUTH_SOCK переменная окружения.

Все задействованные пользователи (пользователь [1-3]) непривилегированные пользователи (не корень).

Эта проблема:

Когда я перехожу на другого пользователя, даже если переменная SSH_AUTH_SOCK установлена ​​правильно (допустим, она установлена ​​на: /tmp/ssh-HbKVFL7799/agent.13799) user2 не имеет доступа к сокету, который был создан пользователем1 - Какой из Конечно, имеет смысл, иначе user2 может перехватить закрытый ключ user1 и перескочить под этим именем.

Этот сценарий отлично работает, если вместо получения оболочки через sudo для пользователя user2 я получаю оболочку через sudo для пользователя root. Потому что, естественно, root имеет доступ ко всем файлам на машине.

Вопрос:

Желательно использовать sudo, как я могу перейти с пользователя user1 на user2, но все еще иметь доступ к SSH_AUTH_SOCK пользователя1?

Вам нужно сделать две вещи:

  1. установить SSH_AUTH_SOCK переменная, чтобы она указывала на правильный файл
  2. разрешить другому пользователю подключаться к сокету (используя разрешения файловой системы)

Следовательно, вы могли бы:

От имени пользователя user1 разрешите пользователю user2 подключаться к сокету (полный доступ к сокету и разрешения на вход в каталог). я надеюсь твои /tmp разрешает ACL.

setfacl -m u:user2:rw $SSH_AUTH_SOCK
setfacl -m u:user2:x $(dirname $SSH_AUTH_SOCK)

Перейдите к другому пользователю и правильно экспортируйте переменную.

sudo -u user2 env SSH_AUTH_SOCK=$SSH_AUTH_SOCK ssh user3@machine2

Если вы хотите открыть интерактивную оболочку, используя sudo, вам придется экспортировать SSH_AUTH_SOCK изменяйте себя после того, как получите оболочку.