Примечание: во второй части письма я объясню, как я столкнулся с этой проблемой, а именно через 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 от своего имени.