У меня была та же проблема, и я нашел несколько проблем. Я не эксперт в этой области, но вот краткое изложение шагов, которые я предпринял для решения. Надеюсь, это будет полезно:
Решение проблемы клона HTTPS:
Клонирование завершилось с ошибкой, описанной выше, и мне не было предложено ввести имя пользователя и пароль в командной строке.
Запуск клона с многословным флагом
git clone --progress --verbose https://[my_gitlab_server]/[repo]/[project].git
показал, что git извлекал учетные данные из OSX Toolchain, которые, по-видимому, были неверными. Я отключил это, используя инструкции здесь .
sudo git config --system --unset credential.helper
Теперь я получаю запрос имени пользователя и пароля, но получил:
remote: HTTP Basic: удаленный доступ запрещен: необходимо использовать личный токен доступа с областью «api» для Git через HTTP.
удаленный: вы можете создать один на https://[my_gitlab_server]/profile/personal_access_tokens
Неустранимый: аутентификация не удалась для 'https://[my_gitlab_server]/[repo]/[project].git/'
Итак, я создал токен личного доступа в соответствии с инструкциями здесь .
Я не был уверен, что делать с токеном. Оказывается, вы можете включить его в URL, как описано здесь (для меня это выглядело как git clone https://oauth2:[token]@[my_gitlab_server]/[project].git
), или вы можете просто вставить токен в командной строке для ввода «пароля».
Теперь я могу клонировать через HTTPS.
Решение проблемы клона SSH:
Клон SSH выдавал ту же ошибку, что и клон HTTPS. Некоторый фон по агентам bash полезен здесь.
Я нашел свой файл ~ / .ssh / config в своем пользовательском каталоге и убедился, что в репозитории есть запись.
Host [my_gitlab_server]/[repo]
IdentityFile ~/.ssh/id_rsa2
У меня было несколько файлов id-rsa в каталоге ssh, поэтому я открыл id_rsa2.pub (тот, который связан с моим репозиторием в файле конфигурации) и сравнил его с ключом, который я нашел в моем репо, перейдя на вкладку «Ключи SSH» в «Настройки профиля». Ключи были одинаковыми.
(Если вам нужна помощь в создании и просмотре ключей, см. Документы здесь .)
Мои ключи были на месте, но мой SSH-клон все еще не работал.
Я подумал, что может быть проблема с файлом конфигурации или что мои ключи больше не действительны, поэтому я обошел файл конфигурации вручную, добавив ключ в текущий сеанс терминала, используя инструкции здесь .
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa2
Это сработало, поэтому я знал, что мой ключ действителен.
(Кстати, чтобы увидеть ключи, загруженные в ваш агент, запустите ssh-add -L
и посмотрите, как запускаются их отпечатки пальцев ssh-add -l
.)
Теперь проблема заключалась в том, что мне нужно было использовать файл ~ / .ssh / config , чтобы мне не приходилось запускать eval
и ssh-add
каждый раз, когда я открывал новое окно терминала.
- Для устранения неполадок я запустил
ssh -Tvv git@[my_gitlab_server]
, который успешно подключился к моему серверу gitlab, но с помощью ключа, который я не узнал. В выводе я заметил, что файл id-rsa2 не был найден.
Используя информацию с 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 по умолчанию, чтобы избежать подобных проблем.