Gitlab不能在服务器上克隆,但可以在客户端克隆
Gitlab can't clone on server, but can clone on client
其他详细信息:
- 项目是私有的
- 服务器用户 ssh 密钥添加到 authorized_keys 并且 ssh 也添加到用户的 gitlab ssh 设置
我有一个 ubuntu 16.04 服务器,其中安装了 git 和 gitlab。我已经设法设置并获得它 运行。我什至设法在我的客户端机器 (windows) 上进行正常的 git 操作。但是当我尝试从服务器克隆 (git clone git@192.168.0.3:root/project.git) 一个 repo 到服务器的 /var/www/html 目录它显示此错误:
严重:'root/project.git' 似乎不是 git 存储库
致命:无法从远程存储库读取。
请确保您拥有正确的访问权限
并且存储库存在。
注意:我已经用我的客户端机器克隆了同一个项目,它工作正常
更新: 我能够通过 HTTP
克隆一个 repo
有人知道如何解决这个问题吗?谢谢
这与身份验证有关:如果服务器上的用户(进行克隆)未通过 GitLab 的正确身份验证(通过 username/password 或 ssh 密钥),则无权访问存储库您将收到一般错误消息。
检查与 GitLab 项目关联的权限级别:除非声明为 public(无需身份验证),否则您需要将服务器用户添加到项目成员列表中。
另一种解决方法是直接克隆存储在 GitLab 服务器上的裸仓库(在 /home/git/repositories/
by default 中),因为您在 GitLab 服务器上。
问题不在于 git,而是您对 Ubuntu
的权限
Update: I was able to clone a repo but via HTTP
给你。 git实验室服务器应该通过 HTTP(S) 访问,因为通常您不会从位于同一台计算机上的存储库克隆。
为防止其他用户或应用程序 accessing/manipulating 存储库中的数据,只有 gitlab 服务器可以访问其文件。
尽管不推荐这样做(因为它违反了 linux 每个服务器都有自己的用户帐户的权限理念),您仍然可以给自己权限。
变体 1(侵入性较小)
将自己添加到 gitlab 服务器 运行ning
所在的组
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(肮脏的简单 hack)
如果您可以确保在您的计算机上拥有帐户的任何其他人都不想访问 gitlab 上的(私人)存储库,您可以授予所有人读取权限:
sudo chown o+r /var/www/path/to/repo
然后操作系统将允许您访问该文件夹并且git将能够从本地路径克隆。
然而,按照预期使用系统是一种很好的做法。 如果您使用本地路径进行克隆,gitlab 将不会注意到这一点,并且,例如,不会调整统计信息或 运行 网络挂钩。
其他详细信息:
- 项目是私有的
- 服务器用户 ssh 密钥添加到 authorized_keys 并且 ssh 也添加到用户的 gitlab ssh 设置
我有一个 ubuntu 16.04 服务器,其中安装了 git 和 gitlab。我已经设法设置并获得它 运行。我什至设法在我的客户端机器 (windows) 上进行正常的 git 操作。但是当我尝试从服务器克隆 (git clone git@192.168.0.3:root/project.git) 一个 repo 到服务器的 /var/www/html 目录它显示此错误:
严重:'root/project.git' 似乎不是 git 存储库 致命:无法从远程存储库读取。
请确保您拥有正确的访问权限 并且存储库存在。
注意:我已经用我的客户端机器克隆了同一个项目,它工作正常
更新: 我能够通过 HTTP
克隆一个 repo有人知道如何解决这个问题吗?谢谢
这与身份验证有关:如果服务器上的用户(进行克隆)未通过 GitLab 的正确身份验证(通过 username/password 或 ssh 密钥),则无权访问存储库您将收到一般错误消息。
检查与 GitLab 项目关联的权限级别:除非声明为 public(无需身份验证),否则您需要将服务器用户添加到项目成员列表中。
另一种解决方法是直接克隆存储在 GitLab 服务器上的裸仓库(在 /home/git/repositories/
by default 中),因为您在 GitLab 服务器上。
问题不在于 git,而是您对 Ubuntu
的权限Update: I was able to clone a repo but via HTTP
给你。 git实验室服务器应该通过 HTTP(S) 访问,因为通常您不会从位于同一台计算机上的存储库克隆。
为防止其他用户或应用程序 accessing/manipulating 存储库中的数据,只有 gitlab 服务器可以访问其文件。
尽管不推荐这样做(因为它违反了 linux 每个服务器都有自己的用户帐户的权限理念),您仍然可以给自己权限。
变体 1(侵入性较小) 将自己添加到 gitlab 服务器 运行ning
所在的组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(肮脏的简单 hack)
如果您可以确保在您的计算机上拥有帐户的任何其他人都不想访问 gitlab 上的(私人)存储库,您可以授予所有人读取权限:
sudo chown o+r /var/www/path/to/repo
然后操作系统将允许您访问该文件夹并且git将能够从本地路径克隆。
然而,按照预期使用系统是一种很好的做法。 如果您使用本地路径进行克隆,gitlab 将不会注意到这一点,并且,例如,不会调整统计信息或 运行 网络挂钩。