Git身份验证 - 作为新用户提取

时间:2011-04-27 11:35:45

标签: git git-pull

以下命令集正常工作

$ 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

我的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目录包含

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 个答案:

答案 0 :(得分:3)

为@ VonC(完全正确)答案添加一点简明英语清晰度......

gitosis(不再处于积极开发状态,您应该使用gitolite,但这个答案适用于它们)将每个用户的公钥存储在(在您的情况下)~gitosis/.ssh/authorized_keys中。当用户ssh到帐户gitosis时,ssh会进行加密握手,在authorized_keys文件中找到与提供的密钥匹配的行,并执行该行所说的任何操作。如果您查看该authorized_keys文件,则每个行提供一个命令,以便在该用户登录时调用,这是对gitosis进程的调用,其中包含相关用户的名称。

因此,每个用户都真的ssh'ing到SAME gitosis“机器”帐户,但他们在那里SSH的密钥会激活他们的用户gitosis。这就是gitosis如何知道它正在与哪个用户交谈,即使他们已经登录了名为gitosis的同一个“机器”帐户。

因此,您想要跟踪gitosis的每个本地回购都需要提供格式gitosis@your.server:<reponame>.git的远程。

答案 1 :(得分:2)

mithun@myserver.net

使用mithun@myserver.net,您完全绕过gitosis,因为正确的网址会涉及安装了gitolite的“git”用户。
每个gitosis命令都会涉及相同的'git'用户:gitosis@myserver.net(假设这里有'gitosis'帐户)。

另外,您不必指定仓库的完整路径:

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