![gitolite позволяет разрешить пользователям, уже присутствующим в файле authorized_keys](https://rvso.com/image/668787/gitolite%20%D0%BF%D0%BE%D0%B7%D0%B2%D0%BE%D0%BB%D1%8F%D0%B5%D1%82%20%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D1%82%D1%8C%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F%D0%BC%2C%20%D1%83%D0%B6%D0%B5%20%D0%BF%D1%80%D0%B8%D1%81%D1%83%D1%82%D1%81%D1%82%D0%B2%D1%83%D1%8E%D1%89%D0%B8%D0%BC%20%D0%B2%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B5%20authorized_keys.png)
Я использую gitolite для ограничения разрешения на репозиторий, и это работало хорошо до тех пор, пока я не попытался клонировать и отправить с пользователем, чей открытый ключ уже добавлен в authorised_keys, а не через gitolite. Я думаю, проблема в том, что я использую ключ, у которого есть доступ к серверу. Когда я пытаюсь клонировать server:reponame, я получаю ошибку, говорящую о том, что репозиторий не существует, а когда я клонирую из repositories/reponame и пытаюсь отправить, я получаю следующие ошибки:
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 370 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Empty compile time value given to use lib at hooks/update line 6
remote: Use of uninitialized value in require at hooks/update line 7.
remote: Can't locate Gitolite/Hooks/Update.pm in @INC (@INC contains: /Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level /System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0 /Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library/Perl/Extras/5.10.0 .) at hooks/update line 7.
remote: BEGIN failed--compilation aborted at hooks/update line 7.
remote: error: hook declined to update refs/heads/master
Есть ли способ дать пользователям, у которых уже есть доступ к серверу, разрешение на репозитории gitolite? Я знаю, что я мог бы использовать другой ключ для пользователя и добавить его в gitolite keydir, но было бы гораздо более естественно, чтобы эти пользователи также имели доступ к репозиториям gitolite.
решение1
tl;dr версия: используйте отдельный ключевой файл для gitolite.
лучше поздно, чем никогда.
просто добавьте уже существующий файл ключа в каталог gitolite/keys, git add, git commit, git push. gitolite сгенерирует сообщение вроде
remote: WARNING: keydir/keyfile_which_was_added.pub duplicates a non-gitolite key, sshd will ignore it
и /home/git/.ssh/authorized_keys
содержит два ключа, один раз уже существующий и еще один в
# gitolite start
и
# gitolite end
раздел.
Я попытался переместить существующий (старый) ключ после # gitolite
раздела, но тогда мой вход по SSH отображает только сообщение gitolite и завершается.
решение будетиспользование отдельного открытого ключа для gilolite.