в разрешении отказано при клонировании из репозитория GitLab, размещенного на инстансе Amazon EC2

Я не могу выполнить отправку / клонирование из GitLab, запущенного на инстансе Amazon EC2. Вот что я сделал до сих пор

  • Создал пару ключей на моем локальном компьютере
  • Создал проект в Gitlab (у моего пользователя GitLab есть права владельца)
  • Добавить мой открытый ключ в webconfig моего пользователя в Gitlab

Когда я пытаюсь клонировать этот репозиторий через git clone [email protected]:project-group/project.git, я получаю печально известное сообщение:

Permission denied (publickey).

Как я могу настроить свой экземпляр EC2 для приема запросов клонирования / push / pull от пользователей, которые добавили свои SSH-ключи через веб-интерфейс Gitlabs?


person Hedge    schedule 07.10.2015    source источник
comment
Возможный дубликат Отказано в разрешении (открытый ключ) на gitlab   -  person Muhammad Laraib Khan    schedule 14.03.2017


Ответы (1)


User ubuntu? Обычно пользовательская конфигурация экземпляра GitLab - git.

Попробуйте изменить ваш файл .ssh / config на User git и используйте этот URL:

git clone myhost:project-group/MyRepo.git

Убедитесь, что test.pub (открытый ключ, извлеченный из файла pem) правильно зарегистрирован в репо (или в вашей учетной записи GitLab. , если вы являетесь владельцем данного репо). Если test.pem - это ключ, используемый для доступа к экземпляру EC2, вам потребуется создать отдельный открытый / закрытый набор ключей и используйте их вместо этого для доступа к GitLab.

После обсуждения ниже выясняется, что:

  • GitLab установлен на инстансе EC2 с Omnibus-gilab
  • Omnibus-gitlab означает использование gitlab-rake some_task (а не 'rake' напрямую)
  • a gitlab-rake gitlab:check указывает, что файл authorized_keys находится в /var/opt/gitlab/.ssh/authorized_keys
  • учетная запись git была заблокирована (разблокировка заставила Gitlab работать: от git:!: до git:*: в файле /etc/shadow).
    Это похоже на "Раздел Устранение неполадок - SSH".
person VonC    schedule 07.10.2015
comment
До сих пор я использовал голые репозитории без GitLab. Как мне зарегистрировать этот test.pem.pub и где его взять? Пока что я использую только закрытый ключ для аутентификации через ssh / и для использования голых репозиториев. - person Hedge; 07.10.2015
comment
@Hedge ssh означает, что у вас есть закрытый и открытый ключи. См. stackoverflow.com/a/10271238/6309 - person VonC; 07.10.2015
comment
Да, я знаю об этом, но где мне взять открытый ключ экземпляра EC2. Все, что у меня есть, - это личное. - person Hedge; 07.10.2015
comment
@Hedge pem должен включать оба, поэтому моя ссылка на stackoverflow.com/a/10271238/6309. См. Также stackoverflow.com/a/24143976/6309. Дело в том, чтобы сгенерировать ваш собственный закрытый / открытый ключ и зарегистрировать открытый в репо или в учетной записи GitLab. Не использовать закрытый ключ экземпляра EC2, который нужен только вам для доступа к этому экземпляру и не имеет ничего общего с аутентификацией пользователя в GitLab. - person VonC; 07.10.2015
comment
Ой, извините, конечно, вы правы насчет того, что .pem содержит и то, и другое. Хорошо, я создал свой собственный открытый ключ (хранящийся в ~ / .ssh / id_rsa.pub). Я сохранил этот ключ в Gitlab-конфигурации для своего пользователя. Создал проект в Gitlab. У моего пользователя со связанным открытым ключом есть полные разрешения, но я получаю permission denied при клонировании на свой частный компьютер. - person Hedge; 07.10.2015
comment
@Hedge Указывает ли ваш файл конфигурации на правильный закрытый ключ? (с пользователем git) - person VonC; 07.10.2015
comment
Я использовал только конфигурационный файл для голых репозиториев до того, как установил Gitlab, поэтому мне не нужно постоянно писать ssh -i ~/.ssh/test.pem .... Чтобы клонировать из Gitlab, я пробую команду в стиле [email protected]:group/project.git, чтобы он не использовал хост, указанный в ~/.ssh/config - person Hedge; 07.10.2015
comment
@Hedge ok: используйте файл конфигурации с myhost:project-group/MyRepo.git. Убедитесь, что запись myhost действительно использует правильный закрытый ключ. Или сделайте новую запись, если вы уже использовали ее. - person VonC; 07.10.2015
comment
Я установил новый хост, подобный этому Host newhost Hostname 11.12.13.14 user git IdentityFile ~/.ssh/id_rsa (этот ключ является закрытым ключом, совпадающим с ~/.ssh/id_rsa.pub, который я сохранил для моего пользователя Gitlab. Затем я попробовал git clone newhost:group/project.git, но все равно получаю сообщение об ошибке :( - person Hedge; 07.10.2015
comment
@Hedge какой доход ssh -Tvv newhost? - person VonC; 07.10.2015
comment
да, пробовал с разными логинами в конфиге. Я обновил суть, используя имя пользователя git. - person Hedge; 07.10.2015
comment
@Hedge Я удалил свой предыдущий комментарий, чтобы не отображать фактическое имя сервера. Что же вернет простой ssh -T newhost? По-прежнему в разрешении отказано. Есть ли на сервере /home/git/.ssh/authorized_keys файл? - person VonC; 07.10.2015
comment
Нет, такого файла нет. У меня создалось впечатление, что мне не нужно вручную добавлять свой открытый ключ в authorized_keys, потому что о ключах позаботится GitLab. - person Hedge; 07.10.2015
comment
@Hedge: да, GitLab должен сделать это за вас. Во-первых, подтверждаете ли вы, что GitLab использует учетную запись git? (в config / gitlab.yml) - person VonC; 07.10.2015
comment
Да, он использует учетную запись git (по умолчанию) в соответствии с /var/opt/gitlab/gitlab-rails/etc/gitlab.yml. Что еще может вызвать эту проблему? - person Hedge; 07.10.2015
comment
@Hedge Пока /home/git/.ssh/authorized_keys не отражает должным образом ваш открытый ключ, ничто не будет работать должным образом: см. github.com/gitlabhq/gitlab-public-wiki/wiki/, если это поможет (что раздел или остальную часть страницы тоже) - person VonC; 07.10.2015
comment
Я использовал пакет Omnibus для установки Gitlab. Должен ли я установить сборщик и т. Д., Чтобы выполнить задачу rake, указанную на странице Wiki, или есть более простой способ повторно синхронизировать authorized_keys? Посмотрел в файле /var/log/gitlab/gitlab-shell/gitlab-shell.log. Есть новая запись, в которой говорится, что ключ был добавлен, но у пользователя git даже нет каталога .ssh. - person Hedge; 07.10.2015
comment
@Hedge На самом деле нет. Если вы не подписаны на gitlab.com/gitlab-org/gitlab-ce/issues/363 - person VonC; 07.10.2015
comment
@Hedge Wait: stackoverflow.com/a/27816590/6309: с омнибусом GitLab вы можете использовать gitlab-rake some_task. - person VonC; 07.10.2015
comment
Я могу выполнять задачи, как вы указали. Он также предупреждает меня о You will lose any data stored in authorized_keys file., но после ввода yes ничего не происходит. Я начинаю думать, что сотрудник создал пользователя git вручную, прежде чем я взял на себя экземпляр EC2. - person Hedge; 07.10.2015
comment
@Hedge Я согласен: пока это не работает должным образом, любой URL-адрес ssh не сможет успешно достичь Gitlab. - person VonC; 07.10.2015
comment
Могу ли я каким-то образом удалить пользователя и позволить омнибусу воссоздать его без необходимости заново настраивать весь EC2? - person Hedge; 07.10.2015
comment
@Hedge Этого я не знаю - person VonC; 07.10.2015
comment
Я быстро выполнил gitlab-rake gitlab: check и обнаружил, что authorized_keys находятся в /var/opt/gitlab/.ssh/authorized_keys. Затем я создал символическую ссылку на папку .ssh через sudo ln -s /var/opt/gitlab/.ssh /home/git/, но она по-прежнему не работает. - person Hedge; 07.10.2015
comment
@Hedge, вероятно, потому, что демон ssh настроен так, чтобы не искать там ключ (или через символическую ссылку) - person VonC; 07.10.2015
comment
@ Сообщает ли gitlab-rake gitlab:env:info и gitlab-rake gitlab:check о каких-либо проблемах? - person VonC; 07.10.2015
comment
@Hedge См. Также gitlab.com/gitlab-org/omnibus-gitlab/issues/ 538, чтобы проверить другие предложения. - person VonC; 07.10.2015
comment
О проблемах с обеими командами не сообщается. check даже говорит: проверьте каталоги и файлы: / var / opt / gitlab / git-data / repositories: OK /var/opt/gitlab/.ssh/authorized_keys: OK - person Hedge; 07.10.2015
comment
Теперь я могу толкать и тянуть. Я установил git:!: to git:*: в файле /etc/shadow. Это нормально? - person Hedge; 07.10.2015
comment
@Hedge, я полагаю, это нормально: см. github.com / gitlabhq / gitlab-public-wiki / wiki /. Я соответствующим образом отредактировал ответ. (также упоминается в github.com/gitlabhq/gitlabhq/issues/5304) - person VonC; 07.10.2015
comment
Большое спасибо за терпение @VonC :) - person Hedge; 08.10.2015