Недавно мне понадобилось проверить новое репо с самохостируемого сервера Gitlab. Я сделал все как обычно:
- Сгенерировал пару ssh-ключей с помощью
ssh-keygen
(поскольку я работаю на новой машине Windows). Если у вас уже есть ключи ssh (попробуйте ls в вашем ~/.ssh и вы увидитеid_rsa
иid_rsa.pub
), то вам не нужно снова генерировать пары ключей. - Добавьте его в раздел ключей SSH на Gitlab.
Но все равно я получил ошибку:
Обычно это должно работать, верно? Да, я делал это бесчисленное количество раз с GitHub, Gitlab, Bitbucket… и не имел никаких проблем.
Кстати, в учетной записи включена 2FA.
Я не знаю причину этого, но у меня есть обходной путь.
Доступ к Gitlab с помощью персонального маркера доступа
Обходным решением является использование персонального маркера доступа Gitlab. Я не пробовал это на Github (так как он отлично работает с SSH-ключом), но думаю, что это тоже должно сработать.
Первый шаг — сгенерировать персональный токен доступа:
Затем введите имя токена и отметьте api
.
Затем нажмите на Create personal access token и вы получите токен для использования:
Теперь вернитесь в свой репозиторий и скопируйте стандартный https URL. Он должен выглядеть примерно так:
https://git.some-server.com/group/repo/repo-name.git
Вам нужно немного изменить этот URL, используя только что созданный токен:
https://<token_name>:<token>@git.some-server.com/group/repo/repo-name.git
Теперь я могу использовать этот URL для клонирования репозитория:
Если у вас уже есть репозиторий, вам просто нужно обновить удаленный url
git remote set-url origin https://<token_name>:<token>@git.some-server.com/group/repo/repo-name.git
После этого вы можете нормально тянуть и толкать.
Заключение
Вот и все! Вы снова можете продолжать работу над своим репозиторием. Я все еще не знаю, почему добавление ssh не сработало, но использование персонального маркера доступа является приемлемым решением.
Единственное, что мне не нравится в этом методе, это то, что любой, кто имеет доступ к вашей машине, может работать:
git remote -v
и увидеть ваш маркер доступа. Затем этот человек может использовать учетные данные, чтобы делать то, что вы можете на своем репозитории.
Так что блокируйте экран, когда вы не за компьютером 😀
Если вам понравился этот пост, обязательно загляните в мой блог https://datmt.com. Там я пишу о #программировании 🙂