Git аутентификация - тянуть как новый пользователь - PullRequest
2 голосов
/ 27 апреля 2011

Следующий набор команд работал правильно

$ mkdir carboncake
$ cd carboncake
$ git init
$ git remote add origin gitosis@myserver.net:repositories/carboncake.git 
$ git pull

Но когда я попытался вытащить от имени другого пользователя,

$ mkdir carboncake
$ cd carboncake
$ git init
$ git remote add origin mithun@myserver.net:repositories/carboncake.git 
$ git pull

Я получил следующую ошибку

fatal: 'repositories/carboncake.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

my gitosis.conf содержит

[gitosis]

[group team]
writable = sweepshots
members = git_id_rsa

[group gitosis-admin]
writable = gitosis-admin
members = git_id_rsa


[repo carboncake]
description = A brand new app by Mithun.
owner = Mithun P

[group carboncake]
writable = carboncake
members = mithun @core

, а keydir содержит git_id_rsa.pub KEY-----.pub mithun.pub mithun-rsa-key-20110427.pub

, а .ssh dir пользователя содержит

mithun@testserver:~$ ls .ssh/
id_rsa  id_rsa.pub  mithun_rsa  mithun_rsa.pub

-ОБНОВЛЕНИЕ

Я тоже пытался $ git remote add origin mithun@myserver.net:carboncake.git, но та же ошибка.

На самом деле carboncake.git находится в /srv/gitosis/repositories/carboncake.git

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

Чтобы добавить немного ясности на английском языке к ответу @ VonC (полностью правильно) ...

gitosis (который больше не находится в активной разработке, и вы должны использовать gitolite, но этот ответ относится к обоим из них) хранит открытые ключи каждого пользователя в (в вашем случае) ~gitosis/.ssh/authorized_keys. Когда пользователь ssh обращается к учетной записи gitosis, ssh выполняет криптографическое рукопожатие, находит в этом файле author_keys строку, соответствующую предоставленному ключу, и выполняет все, что эта строка говорит делать. Если вы посмотрите на этот файл author_keys, каждая строка предоставляет команду для вызова при входе этого пользователя, которая является вызовом процесса gitosis и содержит имя пользователя, о котором идет речь.

Таким образом, каждый пользователь ДЕЙСТВИТЕЛЬНО ssh'ing к одной и той же gitosis "машинной" учетной записи, но ключ, который они SSH там с запускает Gitosis КАК пользователь, которым они являются. Таким образом, gitosis знает, с каким пользователем он общается, даже если они вошли в одну и ту же «машинную» учетную запись с именем gitosis.

Таким образом, каждому локальному репо, который вы хотите отслеживать на гитозе, нужно предоставить пульт в формате gitosis@your.server:<reponame>.git.

2 голосов
/ 27 апреля 2011

mithun@myserver.net?

Используя mithun@myserver.net, вы полностью обойдете гитоз, поскольку правильный URL-адрес будет включать пользователя 'git', под которым был установлен гитолит. В каждой команде gitosis должен быть один и тот же пользователь git: gitosis@myserver.net (при условии, что здесь есть учетная запись gitosis).

Кроме того, вам не нужно указывать полный путь репо:

 git remote add origin gitosis@myserver.net:carboncake.git
...