отладка проблем с загрузкой репо - Отказано в доступе (publickey)

Мы пытаемся настроить экземпляр Gerrit для проверки кода и планируем использовать «репозиторий» с in. Я могу отправить напрямую в Gerrit, но использование repo upload завершается с ошибкой открытого ключа:

user@machine:~/workspace/git/gerrit-test$ repo upload
Upload project path/gerrit_test/ to remote branch master:
branch master ( 1 commit, Fri Aug 3 15:23:50 2012 -0700):
     8ef17a1b this better effin work
to gerrit.test.com:8081 (y/N)? y
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

----------------------------------------------------------------------
[FAILED] path/gerrit_test/ master          (Upload failed)

Я сузил проблему до имени пользователя, которое используется для этого репо, но понятия не имею, где установить это имя пользователя (я также не уверен, как проверить, какое имя пользователя используется). Я попытался добавить следующее в .repo/manifests.git/config, но все равно не получается.

[review "gerrit.test.com:8081"]
        username = <my_username_from_gerrit_profile_page>

Где добавить правильное имя пользователя?

Спасибо.


person copolii    schedule 03.08.2012    source источник
comment
Для справки, хороший способ отладить это и увидеть URL-адрес (включая имя пользователя), который использует repo upload, — это использовать GIT_TRACE=1 repo upload.   -  person sschuberth    schedule 26.07.2016


Ответы (3)


По умолчанию сервер gerrit ssh запускается на порту 29418. Похоже, вы подключаетесь к порту 8081, который, как я подозреваю, является номером порта веб-сервера.

Для подтверждения проверьте следующий раздел вашего файла «etc/gerrit.config»:

[sshd]
    listenAddress = *:29418
[httpd]
    listenUrl = http://*:8081/

Вы можете дополнительно проверить свои учетные данные закрытого ключа, выполнив следующую команду:

$ ssh -p 29418 your_user_id@localhost

  ****    Welcome to Gerrit Code Review    ****

  Hi mark, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://your_user_id@your_machine:29418/REPOSITORY_NAME.git

Connection to localhost closed.

Я думаю, что причина, по которой вы можете «направить напрямую к Герриту», заключается в том, что номер порта ssh является частью URL-адреса репозитория.

person Mark O'Connor    schedule 05.08.2012
comment
Спасибо. Попробую это и сообщу, когда вернусь на работу через две недели. - person copolii; 06.08.2012
comment
@copolii Приятного отдыха :-) - person Mark O'Connor; 07.08.2012

Убедитесь, что у вас есть имя пользователя в файле конфигурации.

$ git config --global review.<"URL">.username $USER
person Oliver    schedule 18.06.2013
comment
Это действительно неудобно, но в большинстве случаев это действительно необходимо, поскольку repo по умолчанию использует адрес электронной почты пользователя в качестве имени пользователя вместо имени локальной учетной записи пользователя. - person sschuberth; 26.07.2016

инструмент репо использует префикс вашего адреса электронной почты как review.URL.username

Например,

имя пользователя: john_chen

Электронная почта: [email protected]

John_Chen будет review.URL.username.

следовательно, вы должны проверить, есть ли у вас возможность подключиться через John_Chen

Вы можете отследить это с помощью repo --trace upload.

person user3343651    schedule 30.08.2014