Сценарий:
Я запускаю 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?
Вам нужно сделать две вещи:
SSH_AUTH_SOCK
переменная, чтобы она указывала на правильный файлСледовательно, вы могли бы:
От имени пользователя 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
изменяйте себя после того, как получите оболочку.