2017-04-26 81 views
0

其他细节:Gitlab无法克隆服务器上,但可以在客户端克隆

  • 项目被添加到authorized_keys的私人
  • 服务器用户SSH密钥和SSH也加入到用户的gitlab SSH设置

我有一个Ubuntu 16.04服务器,其中安装了git和gitlab。我设法设置并运行它。我甚至设法在我的客户端机器(Windows)上执行正常的git操作。但是,当我尝试从服务器上的服务器的/ var/www/html目录中克隆(git clone [email protected]:root/project.git)repo时,它显示此错误:

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

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

注:我已经克隆了这个相同的项目,我的客户端机器,它工作正常

更新:我能够克隆一个回购协议,但通过HTTP

没有任何人有任何想法如何解决这个问题?谢谢

+0

你比较过你使用的各种git软件包的版本吗?另外,你是如何创建'project.git'文件的?是从Windows复制的,还是由服务器上的本地git创建的?你可以创建一个本地回购和克隆吗? –

+0

1. project.git文件是由gitlab创建的 2.是的项目是在Windows上创建的,并推送到服务器 3.我甚至无法推到创建的仓库 对这个git的东西感到抱歉 –

+0

你能不能请提供'/ var/www'的权限? – pentix

回答

1

问题不Git的,但在Ubuntu

您permssions

Update: I was able to clone a repo but via 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不会注意到这一点,例如,不会调整统计信息或运行Web挂钩。

+0

“gitlab服务器应该通过HTTP(S)访问,因为通常情况下,您不会从位于同一台计算机上的存储库进行克隆。” - 谢谢你在这方面给我启迪。现在对我来说这一切都很有意义。我尝试了变体1:并将自己添加到git组(还没有gitlab组)仍然是相同的结果 –

+0

没问题,是的,也许你知道gitlab提供了存储库托管(就像GitHub,Bitbucket等)在使用他们的服务和你所做的事情之间是你想要代码托管你自己的服务器,通常你不直接在你的服务器上工作,而是在其他计算机上克隆它。我可以问你更新你的问题,并插入'ls -l/var/www/path/to/repo'的输出,这样我就可以看到权限了吗? – pentix

+0

我忘了提及你应该在该目录中的所有文件上设置权限,而不仅仅是在目录本身上。请看我更新的答案。 – pentix

0

这是关于身份验证:如果服务器上的用户(做克隆)没有正确验证GitLab(通过用户名/密码或SSH密钥),它将无权访问回购和你会得到一般的错误信息。

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

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