gitolite:可以通过ssh连接,不能克隆

时间:2012-02-18 06:47:26

标签: git ssh gitolite

我使用this tutorial在我的服务器上安装了gitolite。这属于“非根”方法。

当我尝试将gitolite-admin克隆回我的客户端时,它失败了。我收到此错误消息:

git clone gitolite@server.com:gitolite-admin
Cloning into gitolite-admin...
fatal: The remote end hung up unexpectedly

此外:

git clone ssh://gitolite@server.com:gitolite-admin
Cloning into gitolite0admin...
Using username "git-upload-pack 'gitolite".
fatal: The remote end hung up unexpectedly

我还尝试将.git附加到回购帐户名称的末尾,我还尝试添加repositories/gitolite-admin(由上面链接的教程中的错误建议)以及这两者的组合没有人工作。我在谷歌上找不到关于“使用用户名”位的结果,这引起了我的兴趣。

我可以通过ssh连接到机器,它告诉我可以访问R和W gitolite-admin。那么,SSH正在运作吗?

2 个答案:

答案 0 :(得分:7)

检查ssh parts about gitolite:您可以通过server.com连接到ssh的事实仅表示:

  • 您的ssh密钥已在server.com@~/.ssh/authorized_keys
  • 中注册
  • 该密钥与gitolite无关'没有“command=”选项,这意味着“无论传入用户要求做什么,都强行运行此命令”。) 您处于交互式会话中,能够执行您喜欢的任何命令。

我对第三方教程完全不喜欢的是,它尝试使用同名的git用户和ssh非root用户

你应保持分开

  • 非root用户不是帐户,只是一个ssh密钥,它将链接到gitolite,具有{{1的管理员权限} repo)
  • 托管帐户,应为“gitolite-admin”,而不是git,正好避免两种使用模式之间的混淆
    • gitolite直接登录git,此处没有ssh ):执行git命令所需的交互式会话(例如在服务器上克隆gitolite repo并执行server.com
    • gitolite/src/gl-system-install将使用您的ssh git@server.com公钥和私钥,这些公钥和私钥将授权您克隆~/.ssh/id_rsa(.pub)回购并推回该回购

再次:
'gitolite'不是真正的帐户,只有授权在gitolite-admin上执行命令的名称为“server.com(实际的“托管帐户”) “,如”托管git服务和回购“) 所有其他git用户也将git上的git命令作为server.com执行 该特定用户(git)将通过forced-command mechanism链接到gitolite授权层,并在gitolite安装期间设置权限,以授予该“用户”克隆,修改和权限的权限推回gitolite回购 (与你将添加的所有其他ssh git用户相比,这是唯一的特殊性:他们将无法访问特定的git repo,即gitolite-admin一个)

尝试将两者命名为同名,只是在寻找麻烦。

我不喜欢使用公钥/私钥的默认命名约定,所以我更喜欢客户端使用目标用户的名称定义这些键:

gitolite-admin

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

~/.ssh/config

(请注意此处的用户:始终host gitolite user git hostname server.com identityfile ~/.ssh/gitolite
然后我可以克隆我的git repo:

gitolite-amin

答案 1 :(得分:1)

对于后代,修复方法是确保GIT_SSH 设置为TortoisePlink.exe。 Git无法使用它。