【问题标题】:Set up Gitosis, but can't clone设置 Gitosis,但无法克隆
【发布时间】:2010-06-12 20:44:27
【问题描述】:

我已经在远程 Ubuntu 机器上设置了 Gitosis,我将在以下命令中将其称为 linuxserver 作为我的主机。我也在使用 Cygwin 从 Windows 机器进行连接。

我按照说明按照:http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

在需要将 gitosis-admin 存储库克隆到本地计算机之前,我没有任何问题

git clone git@linuxserver:gitosis-admin.git

当我这样做时,命令会执行,但会一直挂在那里,直到我按 ctrl-c 返回命令提示符为止。根本不显示任何消息。

我很确定我的 ssh 密钥设置正确,因为使用“ssh linuxserver”登录到我的常规帐户可以完美运行,无需输入密码。

编辑:周末我在家里设置了一个几乎相同的 Ubuntu 机器,设置 Gitosis 没有问题。唯一的区别是我是从 OSX 而不是 Cygwin 连接的。

编辑:我还发现,当使用“Git Extensions”提供的 Bash Shell 时,我没有任何问题,所以问题肯定是某种 Cygwin 冲突。 p>

编辑:只是一个更新,但在发布这个问题大约一个月后,我切换到 Mercurial,发现我更喜欢它而不是 git。感谢您的建议,但我不打算返回 git 尝试其中任何一个。

【问题讨论】:

  • 好的,对我来说它是从 git bash 工作的(以前我在 cygwin 上尝试过)。谢谢你的评论,否则我会打破我的头!

标签: git ssh cygwin gitosis


【解决方案1】:

我还建议在 conf 中设置调试选项。

[gitosis]
loglevel = DEBUG

【讨论】:

  • 然后?对我来说没有任何变化,它是某个地方的日志文件吗?
【解决方案2】:

您检查过服务器上的/var/log/messages 吗?
可能是用户名 'git' 不能正常工作:来自comments of Gitosis

如果您查看 authorized_key 文件,您会发现它没有导入生成密钥的系统的名称,而是服务器框的名称。

示例:使用用户名“git”会导致授权密钥中出现这种情况

root@git-repo:/home/git/.ssh# cat authorized_keys command=”gitosis-serve root@git-repo”

改成用户名“gitosis”后是这样的

root@git-repo:/home/gitosis/.ssh# cat authorized_keys command=”gitosis-serve myuser@mylocalbox”, 

为了解决这个问题,我使用 /home/gitosis 的主目录创建了一个用户 gitosis,然后再次运行 git-init 脚本。

sudo -H -u gitosis gitosis-init < /tmp/id_rsa.pub
sudo chmod 755 /home/gitosis/repositories/gitosis-admin.git/hooks/post-update

然后,在本地盒子上..

git clone gitosis@YOUR_SERVER_HOSTNAME:gitosis-admin.git

【讨论】:

  • 您的答案的第一部分完全不合时宜。您应该删除它,以免混淆新读者。第二部分似乎是正确的,但需要重新格式化。
  • @Novelocrat:我删除了第一部分。我不确定您想要的“重新格式化”,所以我将此答案设置为 CW(社区 Wiki):您可以根据需要对其进行编辑和重新格式化。
【解决方案3】:

我发现these instructions 提供了更多关于您在安装 gitosis 时正在做什么的解释。可能会帮助某人。

【讨论】:

  • 感谢您提供更多信息。我会尝试一下,但后来我转向 Mercurial(并且喜欢它)。
【解决方案4】:

我遇到了和你一样的问题,我的解决方案是将用户“git”添加到服务器上 ssh 配置文件中的允许用户中。一个基本的疏忽——是的——但是当我遵循相同的教程并且没有提到这一步时,其他人很容易忘记将 git 用户添加到 ssh 配置文件中。

【讨论】:

    【解决方案5】:

    我的电脑也有类似的问题。我在 Archlinux 上安装了 gitosis,它在运行时可以工作

    git clone ssh://git@localhost/oslab.git
    

    但如果我将 localhost 更改为 192.168.1.1 之类的 IP,它就会挂起。

    【讨论】:

      【解决方案6】:

      如果其他人遇到此问题,并试图从安装了 Msys Git 的客户端上的 Cygwin 环境进行连接,请检查 GIT_SSH 环境变量的值。它应该未设置或等于 /usr/bin/ssh 而不是 plink.exe

      我能够以 git 用户身份 ssh 到服务器(预期会被 gitosis 脚本拒绝),但是我无法克隆。

      我意识到发生了一些奇怪的事情,因为 git 仍然警告主机未知,而直接 ssh 连接没有。当我查看 strace 的输出时,这一点得到了证实

      strace git clone git@server:gitosis-admin.git | less
      

      搜索“ssh”,显示 GIT_SSH 指向 plink.exe - Msys Git 使用的 putty ssh 客户端。不知道为什么 plink.exe 不起作用,但设置 GIT_SSH=/usr/bin/ssh 解决了问题。

      【讨论】:

        猜你喜欢
        • 2010-11-20
        • 1970-01-01
        • 2011-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-24
        • 2013-07-14
        相关资源
        最近更新 更多