首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gitolite:添加用户不工作,并拒绝当克隆作为根?

Gitolite:添加用户不工作,并拒绝当克隆作为根?
EN

Stack Overflow用户
提问于 2012-06-01 02:47:38
回答 1查看 26.3K关注 0票数 6

我设法在NAS上插入了一个空的git,并试图通过生成一个新的公钥"foo.pub“并将其复制+粘贴到keydir/并将其提交给NAS,从而添加一个新用户。

首先,文件:

下面是我的~/..ssh/config文件:

代码语言:javascript
复制
Host root
    HostName iptonas
    User root
    Port 123        

Host foo
    HostName iptonas
    User foo
    Port 123
    identityfile ~/.ssh/foo

从NAS抓取了一份珍珠岩-管理员:

代码语言:javascript
复制
git clone ssh://root/gitolite-admin

我得到:

代码语言:javascript
复制
Cloning into 'gitolite-admin'...
remote: Counting objects: 12, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 1), reused 0 (delta 0)
Receiving objects: 100% (12/12), done.
Resolving deltas: 100% (1/1), done.

这是我的gitolite.conf文件:

代码语言:javascript
复制
repo gitolite-admin
    RW+     =   git

repo testing
    RW+     =   @all

repo newrepo
    RW+     =   foo
    RW+     =   bar

当我推送我的珍珠岩-管理使用:

代码语言:javascript
复制
git push root:gitolite-admin

我得到:

代码语言:javascript
复制
Counting objects: 10, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 1.02 KiB, done.
Total 6 (delta 0), reused 0 (delta 0)
remote: Initialized empty Git repository in /root/repositories/newrepo.git/
To root:gitolite-admin
   897113c..e7e2daf  master -> master

现在,当我尝试推出新的回购

当我试图逃跑时:

代码语言:javascript
复制
git clone foo:newrepo

我得到:

代码语言:javascript
复制
Cloning into 'newrepo'...
foo@iptonas's password: 
fatal: 'newrepo' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

当我试图逃跑时:

代码语言:javascript
复制
git clone root:newrepo

我得到:

代码语言:javascript
复制
Cloning into 'newrepo'...
FATAL: R any newrepo git DENIED by fallthru
(or you mis-spelled the reponame)
fatal: The remote end hung up unexpectedly

我不知道我做错了什么?

我遵循以下说明:“添加存储库和用户”下的http://www.nineproductions.com/linux/53-gitolite-hosting.html

EN

回答 1

Stack Overflow用户

发布于 2012-06-01 04:00:33

这些说明提到了与一个用户进行克隆,该用户在安装Gitolite时使用了id_rsa.pub密钥。

因此,您的帐户在声明“~/.ssh”用户(这是唯一能够克隆gitolite-admin回购的用户)时必须在其id_rsaid_rsa.pub密钥中使用gitolite使用的密钥。

现在,要添加一个用户,您不仅必须在gitolite.conf文件中声明所述用户(您确实这样做了),还必须将他的公钥添加到本地gitolite-admin repo 'keys‘目录中。

我请Steve生成一个新的公钥/私钥对,使用”ssh-keygen -t dsa

  • I请求Steve发送给我他刚刚生成的

  • ,我将公钥从id_dsa.pub重命名为sfranko.pub

  • I,将sfranko.pub密钥复制到gitolite-admin/keydir目录

如果您在回推gitolite-admin之前同时执行这些操作,那么Gitolite将声明新用户,您的git clone foo:newrepo也会工作。

请注意,如果您按照我以前的建议使用git帐户安装了Gitolite,那么您应该在配置文件中拥有:

代码语言:javascript
复制
Host git
    HostName iptonas
    User git
    Port 123
    Identityfile ~/.ssh/git

然后去一个git clone git:gitolite-admin

您应该看到/使用root的唯一时间是在服务器端安装的开始阶段,以便声明/添加git帐户。

在此之后,我建议您不要在流程中任何地方使用/查看root

实际上我生成了两个键集,所以我的~/.ssh文件夹当前有:id_rsaid_rsa.pubid_fooid_foo.pub

您的~/.ssh文件夹应该包含:

gitgit.pubid_fooid_foo.pub

Gitolite的授权机制基于在公钥名称之后进行的身份验证。

再次:在服务器端,您必须以用户的身份进行gitolite安装,比如“git”,并使用/tmp/git.pub (而不是/tmp/id_rsa.pub)作为参数。

让我们回顾一下,因为这里有很多混乱。宝石是以ssh为基础的。

这意味着您需要服务器端的一个帐户(这里是'git') (这将是您的Gitolite服务器),其中一个~git/.ssh/authorized_keys文件将记录所有的Gitolite管理员/用户公钥。

在客户端(用户foo),您需要(至少对于您的第一个用户) git的公钥和私钥,以及foo的公钥和私钥。

您的~foo/.ssh/config文件将包含:

代码语言:javascript
复制
Host gitadmin
    HostName iptonas
    User git
    Port 123        
    identityfile ~/.ssh/git

Host foo
    HostName iptonas
    User git
    Port 123
    identityfile ~/.ssh/foo

请注意,任何ssh通信的用户总是git!您总是通过一个ssh地址(如ssh://git@iptonas:123/arepo )与Gitolite服务器联系。

除了有多个SSH键可供选择外,您还可以键入:

  • git clone gitadmin:gitolite-admin,or
  • git clone foo:newRepo

第一个命令将允许您克隆gitolite-admin回购(因为您使用密钥进行复制,所以您有权这样做)。

您可以使用本地克隆将foo.pub放在keys目录中,并在config文件中声明newRepo

然后推回回购(而Gitolite发挥了它的魔力,创建了一个新的回购,为您将foo.pub的内容添加到~git/.ssh/authorized_keys,并使用强制命令脚本来拦截foo发出的任何ssh命令)。

(我更喜欢命名ssh快捷方式'gitadmin‘而不是git,即使公钥/私钥被命名为'git.xxx',因为'gitadmin’更好地传达了您将使用它执行的ssh命令的意图:您将管理git访问权限)

第二个命令允许您克隆和处理newRepo

请注意:

  • ssh gitadmin,or
  • ssh foo

将显示gitolite版本和与每个ssh快捷方式'gitadmin‘和'foo’相关联的ssh键的权限,如~foo/.ssh/config文件中所定义的。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10843781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档