【问题标题】:git clone git@myserver:gitolite-admin failsgit clone git@myserver:gitolite-admin 失败
【发布时间】:2012-11-30 04:56:30
【问题描述】:

我正在尝试运行一个 git 服务器存储库。 我确实安装了 gitolite

当通过 ssh 运行 git info 时,服务器会回答

ssh git@myserver info

hello Brian, this is git@hepide01pep1 running gitolite3  on git 1.6.3.2
R W   testing

尝试克隆 gitolite-admin 存储库时出现以下错误

git clone git@myserver:gitolite-admin

Cloning into 'gitolite-admin'...
FATAL: R any gitolite-admin Brian DENIED by fallthru
(or you mis-spelled the reponame)
fatal: The remote end hung up unexpectedly

这种语法也会发生同样的事情

git clone ssh://git@myserver/gitolite-admin 
Cloning into 'gitolite-admin'...
FATAL: R any gitolite-admin Brian DENIED by fallthru
(or you mis-spelled the reponame)
fatal: The remote end hung up unexpectedly

谁能给我一些有用的提示?我在这里和网络上查看了答案,但没有找到任何进一步帮助我的东西。

【问题讨论】:

    标签: git gitolite


    【解决方案1】:

    如果您只是设置 gitolite,则可接受的答案是一个很好的答案,但如果您是现有安装的新用户,您将收到与问题中相同的错误,除非您已经已添加为管理员。

    如果您拥有 gitolite 所在服务器的 shell 访问权限,请登录并切换到 gitolite 用户的用户 - 通常称为 git

    登录 gitolite 用户后,转到 conf 文件并在 gitolite-admin 存储库中授予自己 RW+ 权限。 Gitolite conf 通常在/home/git/.gitolite/conf/gitolite.conf(假设用户名是git)。对于名为Peaches的gitolite用户,授予权限:

    repo gitolite-admin
        RW+     =   OriginalAdmin Peaches
    

    保存文件,从命令行运行安装程序,仍然是 gitolite 用户:

    gitolite setup
    

    如果您已正确设置为用户,您现在应该可以克隆了。

    有关添加用户的更多信息,请参阅the documentation

    【讨论】:

    • 请注意,如果您使用的是 ubuntu,并且您已通过 apt-get 安装了 gitolite,则 gitolite 设置为 'gl-setup'
    • 谢谢,这对我帮助很大!尤其是 gitolite 设置部分!
    【解决方案2】:

    gitolite-admin 只能使用以用于 gitolite 服务器的 git 帐户命名的公钥访问。

    默认情况下,您使用的是 brian.pub,它只允许您访问 testing.git 存储库。

    您需要在本地工作站上定义一个$HOME/.ssh/config 文件,以便记录ssh 参数以使用正确的密钥。
    请参阅“gitolite: can connect via ssh, can't clone”。

    ~/.ssh/gitolite.pub
    ~/.ssh/gitolite
    

    然后我定义了一个配置文件:~/.ssh/config,其中包含:

    host gitolite
         user git # replace it by the actual git user for the gitolite server
         hostname server.com
         identityfile ~/.ssh/gitolite
    

    克隆将起作用:

    git clone gitolite:gitolite-admin
    

    OP macbert 确认:

    我确实将密钥重命名为 git.pub,运行 gitolite setup -pk git.pub 并从 .gitolite/keydir 中删除了旧的 brian 密钥。
    之后我得到了git clone git@myserver:gitolite-admin

    Cloning into 'gitolite-admin'... 
    remote: Counting objects: 15, done. 
    remote: Compressing objects: 100% (12/12), done. 
    remote: Total 15 (delta 0), reused 0 (delta 0) 
    Receiving objects: 100% (15/15), done.
    

    因此,使用正确的默认密钥,ssh git@myserver info 这次应该在“hello”消息中显示对 gitolite-admin 存储库的正确访问权限。

    【讨论】:

    • 啊,很好的提示 - 这很有效 git clone git@myserver:testing.git 克隆到“测试”中...警告:您似乎克隆了一个空存储库。我怎么能改变这个?在本指南中,我认为密钥可以命名为任何名称: $ mkdir bin $ gitolite/install -ln $ gitolite setup -pk sena.pub 在 /home/gitolite/repositories/gitolite-admin.git/ 中初始化空的 Git 存储库在 /home/gitolite/repositories/testing.git/ 中初始化空 Git 存储库 警告:/home/gitolite/.ssh/authorized_keys 缺失;创建一个新的下一步将是克隆一个 tut。说它有效
    • @macbert 正确:但您将无法克隆 gitolite-admin,除非您通过 config 文件指定要使用正确的公钥。键的名称很重要。
    • 好的,太好了!我确实将密钥重命名为 git.pub 运行 gitolite setup -pk git.pub 并从 .gitolite/keydir 中删除了旧的 brian 密钥之后我得到了 git clone git@myserver:gitolite-admin 克隆到“gitolite-admin”。 ..远程:计数对象:15,完成。远程:压缩对象:100% (12/12),完成。远程:总共 15 个(增量 0),重用 0 个(增量 0) 接收对象:100% (15/15),完成。听起来很棒 - 谢谢@VonC​​pan>
    • 顺便说一句。您永远不需要手动更改 .gitolite/ 中的任何内容。这就是 gitolite-admin 存储库的用途。每当您将更新推送到该存储库时,它都会自动更新。因此,当您要重命名用户时,请更改密钥文件的名称更新配置文件以使用新名称并将其提交并推送。否则会失败。
    【解决方案3】:

    通常裸 git repos 使用 .git 名称。请尝试做

    git clone git@myserver:gitolite-admin.git

    【讨论】:

    • 相同的输出:-7 git clone git@myserver:gitolite-admin.git 克隆到 'gitolite-admin'... 致命:R 任何 gitolite-admin Brian 被 fallthru 拒绝(或者你误会-拼写 reponame) 致命:远程端意外挂断
    • @macbert normal:这与 repo 的名称无关,与 gitolite 如何控制对特定 'gitolite-admin' repo 的访问有关。
    • Gitolite 足够聪明,可以照顾.git;你根本不需要它。
    猜你喜欢
    • 2010-12-28
    • 2011-11-10
    • 2018-03-21
    • 2018-11-05
    • 2018-08-29
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多