@ITemka

Почему не получается создать голый репозиторий на сервере для совместной работы с Git с использованием протокола SSH?

В данный момент я активно изучаю Git и меня интересует тема работы с сервером.

Знаю, что для создания Git-сервера, сначала необходимо создать голый репозиторий. Сделал я это использовав команду git clone --bare test_project clone_test_project.git . Тутже первый вопрос: обязательно ли в названии голого репозитория прописывать в конце .git? Вопрос глупый, наверное, но я не разобрался в вопросе, поэтому и проверить, будет ли все работать, если не прописывать в названии .git не могу.

Далее я пользовался документацией - http://git-scm.com/book/ru/v2/Git-на-сервере-Устан...

Запоролся на этапе размещения этого самого голого репозитория на сервере. В документации говорилось, что для этого нужно ввести команду scp -r my_project.git user@git.example.com:/srv/git. Мне непонятна часть user@git.example.com:/srv/Git. Что это? Немного посидев, у меня появилась теория, откуда это можно взять. Свой репозиторий я размещаю на сервере gitlab. Поэтому чтобы залить свой репозиторий на сервере, там первоначально нужно создать пустой проект (опять же, я так думаю, потому что чёткой инструкции, которая мне подходит, я не нашёл). Я это сделал и перешёл на его главную страницу. Там нажал на синюю кнопку Clone и мне высветились два варианта ссылки на  мой проект в gitlab. Я подумал, что это то, что мне нужно. Скопировал то, где было написано Clone with SSH, так как именно протокол ssh я хочу использовать для доступа к своему репозиторию на сервере. Получилось git@gitlab.com:potemkin277/test-project.git . И в конечном итоге вся моя команда для размещения голого репозитория на сервере выглядела так: scp -r clone_test_project.git git@gitlab.com:potemkin277/test-project.git .

Вот здесь и возникает проблема. Когда ввожу это в git BASH, предварительно зайдя в папку этого голого репозитория, мне выдаётся ошибка:

git@gitlab.com: Permission denied (publickey, keyboard-interactive).
lost connection

Покопавшись на форумах, понял, что проблема здесь в том, что моя пара ключей не зарегистрирована в файле authorized_keys. Честно говоря, что это я тоже не совсем понял, потому что протокол ssh тоже только начинаю изучать. Но так или иначе этот файл я нигде не нашёл. Попробовал создать свой в папке .ssh и скопировал туда публичную часть своей пары ключей. Это был просто крик отчаяния и, как и ожидалось, ничего не вышло. Для ssh я, если что, использую программку PuTTY.
  • Вопрос задан
  • 166 просмотров
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
обязательно ли в названии голого репозитория прописывать в конце .git?

Это не название репозитория, а название папки. Оно может быть любым.

Далее я пользовался документацией 4.2 Git на сервере — Установка Git на сервер

Главой не ошибся? Если у тебя уже есть сервер GitLab, то и читай про него: 4.8 Git на сервере — GitLab

Мне непонятна часть user@git.example.com:/srv/Git

user — имя, под которым ты авторизован через ssh на внешнем компьютере
git.example.com — адрес этого внешнего компьютера
/srv/Git — путь к папке с репозиторием внутри внешнего компьютера

Но это всё тебе не нужно если уже есть сервер. А GitLab это именно сервер.
Не выдумывай ничего и делай по документации.

там первоначально нужно создать пустой проект

Это уже создаёт пустой голый репозиторий. Ничего руками копировать не надо. Да у тебя и прав нет на такой доступ.

нажал на синюю кнопку Clone и мне высветились два варианта ссылки

Если работать через https-протокол, то создавать ключи не придётся. Всё станет намного проще.

Дальше ты либо клонируешь его себе на комп через
git clone git@gitlab.com:potemkin277/test-project.git

Либо связываешь свой уже существующий репозиторий с ним
git remote add origin git@gitlab.com:potemkin277/test-project.git

Затем отправляешь свою ветку туда и связываешь локальную и внешнюю ветки -u
git push -u origin ветка
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы