Gitlab - git clone завершился неудачно с использованием ssh и https в macOS - PullRequest
0 голосов
/ 09 мая 2018

Мой коллега предоставил мне доступ к его хранилищу как Мастер, затем я клонировал его как с SSH, так и с HTTPS, но это всегда не удавалось:

GitLab: The project you were looking for could not be found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Я проверил мой сгенерированный открытый ключ в файле .pub и уже вставлен в мою учетную запись Gitlab. и я также пытался клонировать хранилище (от другого владельца), и это работает! это сбивает с толку.

я что-то пропустил?

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

У меня была та же проблема, и я нашел несколько проблем. Я не эксперт в этой области, но вот краткое изложение шагов, которые я предпринял для решения. Надеюсь, это будет полезно:

Решение проблемы клона HTTPS:

  1. Клонирование завершилось с ошибкой, описанной выше, и мне не было предложено ввести имя пользователя и пароль в командной строке. Запуск клона с многословным флагом

    git clone --progress --verbose https://[my_gitlab_server]/[repo]/[project].git

    показал, что git извлекал учетные данные из OSX Toolchain, которые, по-видимому, были неверными. Я отключил это, используя инструкции здесь .

    sudo git config --system --unset credential.helper

  2. Теперь я получаю запрос имени пользователя и пароля, но получил:

    remote: HTTP Basic: удаленный доступ запрещен: необходимо использовать личный токен доступа с областью «api» для Git через HTTP. удаленный: вы можете создать один на https://[my_gitlab_server]/profile/personal_access_tokens Неустранимый: аутентификация не удалась для 'https://[my_gitlab_server]/[repo]/[project].git/'

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

  3. Я не был уверен, что делать с токеном. Оказывается, вы можете включить его в URL, как описано здесь (для меня это выглядело как git clone https://oauth2:[token]@[my_gitlab_server]/[project].git), или вы можете просто вставить токен в командной строке для ввода «пароля».

Теперь я могу клонировать через HTTPS.

Решение проблемы клона SSH:

Клон SSH выдавал ту же ошибку, что и клон HTTPS. Некоторый фон по агентам bash полезен здесь.

  1. Я нашел свой файл ~ / .ssh / config в своем пользовательском каталоге и убедился, что в репозитории есть запись.

    Host [my_gitlab_server]/[repo] IdentityFile ~/.ssh/id_rsa2

  2. У меня было несколько файлов id-rsa в каталоге ssh, поэтому я открыл id_rsa2.pub (тот, который связан с моим репозиторием в файле конфигурации) и сравнил его с ключом, который я нашел в моем репо, перейдя на вкладку «Ключи SSH» в «Настройки профиля». Ключи были одинаковыми.

    (Если вам нужна помощь в создании и просмотре ключей, см. Документы здесь .)

Мои ключи были на месте, но мой SSH-клон все еще не работал.

  1. Я подумал, что может быть проблема с файлом конфигурации или что мои ключи больше не действительны, поэтому я обошел файл конфигурации вручную, добавив ключ в текущий сеанс терминала, используя инструкции здесь .

    eval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa2

    Это сработало, поэтому я знал, что мой ключ действителен.

    (Кстати, чтобы увидеть ключи, загруженные в ваш агент, запустите ssh-add -L и посмотрите, как запускаются их отпечатки пальцев ssh-add -l.)

Теперь проблема заключалась в том, что мне нужно было использовать файл ~ / .ssh / config , чтобы мне не приходилось запускать eval и ssh-add каждый раз, когда я открывал новое окно терминала.

  1. Для устранения неполадок я запустил ssh -Tvv git@[my_gitlab_server], который успешно подключился к моему серверу gitlab, но с помощью ключа, который я не узнал. В выводе я заметил, что файл id-rsa2 не был найден.
  2. Используя информацию с ssh.com о ключах и файлах ssh_config , я обнаружил, что файл / etc / private / ssh / ssh_config указывает какие ключи используются. Значения по умолчанию были:

    IdentityFile ~/.ssh/id_rsa IdentityFile ~/.ssh/id_dsa IdentityFile ~/.ssh/id_ecdsa IdentityFile ~/.ssh/id_ed25519

    Я добавил свой ключ id_rsa2, запустив sudo nano /private/etc/ssh/ssh_config и добавив следующую строку:

    IdentityFile ~/.ssh/id_rsa2

Это сработало как чемпион.

В целом лучше использовать один ключ ssh с именем id_rsa по умолчанию, чтобы избежать подобных проблем.

0 голосов
/ 09 мая 2018

Хорошо, не могли бы вы проверить, правильны ли ваши глобалы git относительно вашей учетной записи GitLab.

$ git config --global user.name "Your name"
$ git config --global user.email your@mail.com

У меня возникли проблемы с клонированием, когда мои данные были неверными.

...