嗨,我使用 git 已经有一段时间了,但是我对企业 git 还不熟悉。下面是我所做的操作:test-repo
我创建了一个 ssh 密钥对,并将公钥作为部署密钥添加到我的测试存储库中。现在我可以test-repo
从中克隆我的ssh
,https
但是当我将某人添加为协作者时,他们可以从中克隆存储库,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 repo,但是用户可以使用 git clone 该 repo 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.
答案1
Git 使用多种协议进行客户端与服务器通信:
- http
- https
- 远程控制
- git
当您决定使用ssh
git 服务器时,您需要为将要使用您的存储库的协作者提供相关的 ssh 访问权限。有很多解决方案可以简化管理 - gitlab(它也有 GUI)、gitolite 和许多其他解决方案。Git 甚至附带一个git-shell
- 如果您将其设置为新创建的用户,他将只能使用 git,而不能 ssh 进入服务器。使用ssh
更安全,并且是企业环境的更好解决方案(我认为)。
当您使用 https 作为传输协议时,您会获得 https 的优势(或局限性)。当您的 git 服务器(例如 cgit)具有 Web 界面时,它最常使用,并且它允许用户克隆存储库(但不允许推送)。
请查看这- 关于 Git 中使用的协议的详细解释。