Привет, я использую git некоторое время, но я новичок в корпоративном git. Вот
Это то, что я сделал с моим тестовым репо
. Я создал пару ключей ssh и добавил открытый ключ в мое тестовое репо в качестве ключа развертывания. Теперь я могу клонировать свое тестовое репо
из ssh
и https
, однако, когда я добавляю кого-то в качестве соавтора, они могут клонировать репо из https
, но не из ssh
ssh-keygen -b 4096 -t rsa -f example_rsa -P "" -C ""
$ ls
example_rsa example_rsa.pub
$ git clone git@git.example-private.com: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.
Пользователь не может получить доступ к тому же репозиторию git даже после предоставления доступа через ssh, однако пользователь может git клонировать репо, используя https
.
git clone git@git.example-private.com: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 (у него тоже есть графический интерфейс), gitolite и многие другие. Git даже поставляется с git-shell
- если вы установите его для вновь созданного пользователя, он сможет работать только с git, а не ssh на сервере. Использование ssh
более безопасно и является лучшим решением (на мой взгляд) для корпоративных сред.
Когда вы используете https в качестве транспортного протокола, вы получаете преимущества (или ограничения) https. Чаще всего он используется, когда у вас есть веб-интерфейс для вашего git-сервера (например, cgit), и он позволяет пользователям клонировать репозитории (но не нажимать).
Пожалуйста, посмотрите this - a подробное объяснение протоколов, используемых в Git.