Туннелировать ssh через другого пользователя

Примечание: во второй части письма я объясню, как я столкнулся с этой проблемой, а именно через gitolite. Но проблема ssh, а не gitolite. Тем не менее, я добавил тег gitolite на случай, если у кого-то есть специальное решение для конкретного случая.

Вот общая проблема.

У меня есть сервер с двумя пользователями, alice и bob. alice может принять личность bob через su - bob, но она не знает пароль bob (по какой-то причине). Со своего ноутбука Алиса хотела бы подключиться к серверу по ssh под именем bob, но не может, так как у нее нет его пароля. Есть ли способ использовать ее способность принимать личность bob, чтобы имитировать поведение ssh bob@server? В каком-то смысле я хотел бы туннелировать ssh-подключение через изменение удостоверения пользователя. Я думаю, что это долгий путь, я предполагаю, что ssh не позволяет этого. Но я решил, что все равно спрошу.

Откуда проблема: гитолит

Я пытаюсь использовать гитолит. Я попросил администратора сервера настроить пользователя gitolite, и он дал мне полномочия выполнять su - gitolite на сервере. Однако он не дал мне пароль gitolite, а учитывая время суток, админ сервера ушел домой, так что мне придется ждать до завтра, чтобы спросить у него этот пароль. Между тем, я хотел бы найти обходной путь (если это возможно), просто для удовольствия.

Краткое описание взаимодействия gitolite-ssh (насколько я понимаю): файл authorized_keys в gitolite/.ssh имеет такие строки

# gitolite start
command="/usr/share/gitolite3/gitolite-shell some_user_name",no-portforwarding,
no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa SOME_USER_NAME_KEY
# gitolite end

Таким образом, весь механизм gitolite активируется, когда авторизованный ключ пытается подключиться по ssh к учетной записи gitolite. На самом деле, когда авторизованный ключ sshs (как вы спрягаете глагол «to ssh»?!?) в учетную запись gitolite, выполняется gitolite-shell и берет на себя управление, разрешая только git связанные команды. Вы можете спросить: "тогда зачем вам пароль gitolite, если вы являетесь одним из его авторизованных ключей? Рад, что вы спросили. Для того, чтобы some_user_name модифицировал конфигурацию gitolite, недостаточно добавить такую ​​строку в ~gitolite/.ssh/authorized_keys; some_user_name нужно для добавления в файл конфигурации gitolite, который хранится в репозитории git в ~gitolite/repository/gitolite-admin.git. Чтобы изменить этот файл конфигурации, нужно клонировать это репо, изменить файл конфигурации и вернуть репо обратно. Подвох: пользователи разрешили для отправки модификаций в репозиторий gitolite-admin перечислены в самом репозитории gitolite-admin... Вначале пользователь, который инициализировал gitolite (в данном случае пользователь gitolite), является единственным, кто указан в таком файле конфигурации. могу получить доступ к этому файлу conf как gitolite, чтобы добавить моего пользователя среди пользователей, которые могут изменять конфигурации.Как только я это сделаю, я могу забыть о пользователе gitolite и управлять репозиториями gitolite от своего имени.


person bartgol    schedule 26.05.2016    source источник


Ответы (1)


Есть ли способ использовать ее способность принимать личность Боба, чтобы имитировать поведение ssh bob@server?

Конечно: если Алиса может открыть сеанс оболочки как bob (с su - bob), она может:

  • доступ к /home/bob/.ssh,
  • скопируйте его открытый и закрытый ключ в /home/alice/.ssh/id_rsa.bob.pub и id_rsa.bob.
  • откройте сеанс ssh как bob с ssh -i /home/alice/.ssh/id_rsa.bob bob@server (или используйте .ssh/config файл)

Не забудьте прочитать:

Напоминание: любое использование gitolite всегда осуществляется через пользователя git или gitolite, а не как «alice» или «bob».

person VonC    schedule 27.05.2016