Подключение к Gitlab от Go CI / CD - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь клонировать проект из gitlab с помощью конвейера GO CI / CD. Шаги, которые я сделал, как показано ниже,

  1. У меня уже есть ключ ssh, который я добавил в gitlab.
  2. попытался клонировать с моего локального компьютера, и я могу клонировать с помощью команды "git clone"
  3. Я также пробовал на сервере Go-agent с помощью команды "git clone", и проект клонируется там.
  4. После клонирования проекта я открыл папку ssh и в файле "known_hosts" был изменен какой-то ключ. Поэтому я поместил папку ssh в папку "C: \ Windows \ System32 \ config \ systemprofile", потому что конвейер GO-CD выглядит только там.
  5. Но всякий раз, когда я пытаюсь проверить соединение с конвейером, он говорит, что доступ запрещен. ниже ошибка

:

Repository ssh://git@gitlab.demo.com/exampleproject/someproject.git not found! : 
Error performing command: --- Command ---
git ls-remote ssh://git@gitlab.demo.com/exampleproject/someproject.git
--- Environment ---
{}
--- INPUT ----


--OUTPUT ---

--- ERROR ---
STDERR: Host key verification failed.
STDERR: fatal: Could not read from remote repository.
STDERR: 
STDERR: Please make sure you have the correct access rights
STDERR: and the repository exists.

Я также попытался запустить команду ssh -T git@gitlab.demo.com, но она показывает «Отказано в доступе (publickey)». Кто-нибудь может сказать мне, почему? какую конфигурацию мне не хватает?

1 Ответ

0 голосов
/ 28 декабря 2018

Если вы создали ключ, используя имя по умолчанию id_rsa, попробуйте скопировать его в C: \ Windows \ SysWOW64 \ config \ systemprofile.ssh (https://startbigthinksmall.wordpress.com/2012/04/26/how-to-authorize-local-system-account-for-openssh/).

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

Я предполагаю, что перезапуск службы сервера Go-CD не сработал, и вы используете службу Go Server с использованием учетной записи локальной системы по умолчанию. Я предпочитаю запускать с использованием учетной записи домена, поскольку это помогает при некоторых хитрых проблемах с разрешениями и конфигурации этого типа. Сначала посмотрите на этот ответ: .ssh / файл конфигурации для windows (git)

Если вы работаете под учетной записью службы, ваши ключи RSA обычно записываются в ~ / .ssh / - что, скорее всего, означает: C: /Users/your-account/.ssh. Если эта папка не существует, откройте командное окно в режиме администратора, перейдите в папку вашей учетной записи и запустите mkdir .ssh.

Когда Go-CD устанавливает соединение с репозиторием Git с использованием SSH, он использует команды git, которые в свою очередь вызывают команды ssh. Со всеми этими уровнями существует ряд подходов к настройке идентификаторов или идентификаторов для использования. Сначала прочитайте статью (https://medium.com/@pinglinh/how-to-have-2-github-accounts-on-one-machine-windows-69b5b4c5b14e) Обратите внимание на то, как sshCommand переопределяет, какой git для идентификации будет использоваться, указав путь к файлу rsa.

Вместо того, чтобы редактировать конфигурацию git напрямую, я считаю, что редактирование глобальной конфигурации ssh будет лучше обрабатывать несколько идентификаторов / ключей и будет проще для Go-CD. См. https://www.ssh.com/ssh/config/. По умолчанию файл конфигурации ssh находится в ~ / .ssh / config. Если у вас его нет, создайте текстовый файл с именем config без каких-либо расширений. Отредактируйте файл и добавьте запись, которая указывает путь к вашему файлу идентификации (ключ RSA) или файлам. Например (https://superuser.com/questions/366649/ssh-config-same-host-but-different-keys-and-usernames):

  Host github_username1
    Hostname github.com
    User git
    IdentityFile ~/.ssh/rsa_1
  Host github_username2
    Hostname github.com
    User git
    IdentityFile ~/.ssh/rsa_2

Устанавливает псевдоним хоста, который вы можете использовать для своего материала. Поэтому вместо использования git@gitlab.com/pathtorepo вы должны использовать git @ github_username2 / pathtorepo, если вы используете второй хост, показанный выше.

Всегда вносите отказ в службу Go-CD после внесения изменений, на всякий случай.

...