3.5 KiB
Проблема с go get пакета, находящегося в приватном репозитории
Суть проблемы go get может не дать склонировать из приватного репозитория. К этому могут привести несколько проблем
fatal: could not read Password for
Если произошло такое, знначит go get пытается получить пакет по https, gitlab запрашивает пароль, но go get в авторизацию по паролю не особо умеет, поэтому и выдаёт такую ошибку.
Что нужно сделать
- убедиться, что в gitlab добавлены ключи для доступа по ssh. В принципе, по https не получаем пакеты и ничего не клонириуем, чисто ssh. Чисто статистически с ним проблем меньше
- Если не добавлены, то сгенерировать и добавить. Если устройств, с которых работаете несколько, то лучше добавить отдельный ключ для каждого устройтсва
- В linux системе отредактировать ~/.gitconfig, добавив правило замены урла или заменив, если такое уже присутствует
[url "git@penahub.gitlab.yandexcloud.net:"]
insteadOf = https://penahub.gitlab.yandexcloud.net/
Что тут происходит - git помнит правила insteadOf в порядке указанном в гитконфиге. При столкновении с урлом, которых подходит под правило insteadOf, он меняет его на url указанный в секции, т.е. просто реплейсит. При этом он использует первое найденное правило, ибо если ты уже нашел способ разрешить проблему, как понять, что нужно искать дальше, если ты тупой кусок кода?
Host key verification failed.
Скорее всего, у вас в системе для ssh используется не та пара, кототрая сохранена в gitlab. Стоит обновить значения. в linux пара ключей находится обычно в ~/.ssh. Советую генерить id_rsa, ибо с другими форматами ключей иногда бывают проблемы, суть которых я ещё не понял
Прочие советы
Ещё бывают проблемы от того, что go get по умолчанию ищет пакеты в общем открытом хранилище, типа sumdb, точнее не помню. Ему надо явно указать, какие репозитории находятся в приватных репозиториях, путём установки переменной окружения GOPRIVATE, где через запятую перечислить пути до репозиториев с используемыми приватными пакетами. И, для удобства, советую добавить экспорт этой переменной окружения в profile или ~/.(shellname)rc