Gitlab无法在服务器上克隆,但可以在客户端克隆

时间:2017-04-26 02:47:16

标签: git ubuntu gitlab ubuntu-16.04

其他详细信息:

  • 项目是私人的
  • 服务器用户ssh密钥已添加到authorized_keys,ssh也已添加到用户的gitlab ssh设置

我有一个安装了git和gitlab的ubuntu 16.04服务器。我已设法将其设置为运行状态。我甚至设法在我的客户机(windows)上进行正常的git操作。但是当我尝试克隆(git clone git@192.168.0.3:root / project.git)从服务器到服务器&var / www / html目录的repo时,它显示了这个错误:

致命:' root / project.git'似乎不是一个git存储库 致命的:无法从远程存储库读取。

请确保您拥有正确的访问权限 存储库存在。

注意:我已经使用我的客户端计算机克隆了这个项目,并且工作正常

更新:我能够通过HTTP克隆回购

有没有人知道如何解决这个问题?谢谢

2 个答案:

答案 0 :(得分:1)

问题不是git,而是你对Ubuntu的看法

  

更新:我能够通过HTTP克隆回购

你去吧。 gitlab服务器应该通过HTTP(S)访问,因为通常你不会从位于同一台计算机上的存储库中克隆。

为防止其他用户或应用程序访问/操作存储库中的数据,只有gitlab服务器才能访问其文件。

虽然不建议这样做(因为它违反了linux的许可理念,即每个服务器都拥有自己的用户帐户),你仍然可以给自己许可。

变体1(侵入性较小) 将自己添加到运行gitlab服务器的组

sudo usermod -a -G gitlab paul

并确保所有者组至少具有目录的读取权限

sudo chown g+r /var/www/path/to/the/repo

和文件(更新)

sudo chown -R g+r /var/www/path/to/the/repo

变体2(肮脏,简单的黑客)

如果您可以确保计算机上没有其他帐户想要访问gitlab上的(私人)存储库,您可以为每个人提供读取权限:

sudo chown o+r /var/www/path/to/repo

操作系统将允许您访问该文件夹,git将能够从本地路径克隆。

然而,使用系统时最好使用它们。如果使用本地路径进行克隆,gitlab将不会注意到这一点,例如,不会调整统计信息或运行网络钩子。

答案 1 :(得分:0)

这是关于身份验证:如果服务器上的用户(进行克隆)未通过GitLab(通过用户名/密码或ssh密钥)进行正确身份验证,则无法访问回购和您将得到通用错误消息。

检查与GitLab项目关联的权限级别:除非将其声明为public(不需要身份验证),否则您需要将服务器用户添加到项目成员列表中。

另一种解决方法是直接克隆存储在GitLab服务器上的裸存储库(在/home/git/repositories/ by default中),因为您在GitLab服务器上。