嗨,我现在使用 git 有一段时间了,但是我是企业 git 的新手。这是我对我所做的事情,test-repo
我创建了一个 ssh 密钥对并将公钥添加到我的测试存储库中作为部署密钥。现在我可以克隆我test-repo
的来源ssh
,https
但是当我将某人添加为协作者时,他们可以从中克隆 repo,https
但不能从ssh
ssh-keygen -b 4096 -t rsa -f example_rsa -P "" -C ""
$ ls
example_rsa example_rsa.pub
$ git clone [email protected]:star/test-repo.git
Cloning into 'test-repo'...
Warning: Permanently added the ECDSA host key for IP address '10.0.1.100' to the list of known hosts.
warning: You appear to have cloned an empty repository.
即使在通过 ssh 授予访问权限后,用户也无法访问相同的 git 存储库,但是用户可以使用 git 克隆存储库https
。
git clone [email protected]:star/test-repo.git
Cloning into 'test-repo'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
git clone https://git.example-private.com/star/test-repo.git
Cloning into 'test-repo'...
warning: You appear to have cloned an empty repository.
Git 使用多种协议进行客户端-服务器通信:
当您决定使用
ssh
git 服务器时,您需要为将使用您的存储库的协作者提供相关的 ssh 访问权限。有很多解决方案可以简化管理 - gitlab(它也有 GUI)、gitolite 和许多其他解决方案。Git 甚至带有一个git-shell
- 如果你将它设置为一个新创建的用户,他将只能使用 git,而不能 ssh 进入服务器。使用ssh
更安全,是企业环境更好的解决方案(我认为)。当您使用 https 作为传输协议时,您将获得 https 的优势(或限制)。当您的 git 服务器(例如 cgit)有一个 Web 界面并且它允许用户克隆存储库(但不能推送)时,它最常使用。
请看一下这个——关于 Git 中使用的协议的详细解释。