Настройка SSH в GitLib

При вставке больших файлов в GitLib, используя http-доступ возникает ошибка 413 и как результат — файлы не передаются. В таком случае, лучше передавать информацию через ssh. Но, для этого, нужно несколько повозиться и настроить ssh-ключи. В данной статье описывается, как настроить ssh-доступ для GitLib.

После создания нового проекта стоит обратить внимание на 2 вещи:

  • на подсказку вверху о невозможности записывать изменения при отсутствии SSH ключей
  • на подсказки на странице о необходимых действиях — при создании нового проекта и при создании локального репозитория в существующем проекте.
gitlib ssh

gitlib ssh

Начнем с SSH ключей. Стоит различать 2 разновидности SSH пар ключей — которые использует Git и которые используют клиенты типа Source Tree, Tortoise Git. Проблема первой разновидности в том, что без лишних телодвижений допускается использование только одной пары ключей, в то время как каждый репозиторий требует уникальный ключ, вторых же можно наплодить неограниченное количество (на самом деле можно использовать более 1 пары ключей первого типа, но предлагаемые решения работают либо частично, либо не работают вообще).

Для начала, сделаем ключи для Git, для этого запустим Git Bash. Git подразумевает что в Windows среде ключи лежат по адресу ~ / .ssh / id_rsa, где ~ — путь к домашней директории пользователя (например c: \ Users \ USERNAME), в папке которого есть каталог .ssh, в котором лежит пара ключей — id_rsa.pub и id_rsa (соответственно публичная часть и приватная).

Пришло время для генерирования ключей, возвращаемся к Git Bash и в консоль вводим следующее:

ssh-keygen -t rsa -C «your_email@example.com»»

Данная команда указывает Git Bash создать ключ с коментарием your_email@example.com (зачем он нужен, поймете чуть позже) в формате RSA. Внимательно вводим место сохранения ключа, в nix-like стиле с прямыми (а не обратными!!!) слешами:

c: / Users / USERNAME / .ssh / id_rsa

и дважды вводим пароль для дополнительной защиты ключа (passphrase):

ssh key git

ssh key git

Переходим в личном кабинете в профиль, на вкладку с SSH ключами:

Профиль ssh gitlab

Профиль ssh gitlab

и добавляем содержимое посредством Copy/Paste файла id_rsa.pub (title заполнять не нужно — подставляется автоматически из коментария к ключу, таким образом ключи удобно отличать визуально, не сравнивая fingerprints.)

GitLab Профиль ssh

GitLab Профиль ssh

Убеждаемся что файл принят системой:

Gitlab ssh key profile

Gitlab ssh key profile

HTTP доступ к репозиторию

Настала очередь собственно локального репозитория. Возвращаемся в Git Bash и поочередно вводим команды, которые услужливо подсказывает стартовая страница вашего проекта:

cd d: / projects / test — переходим в папку где будет лежать будущий проект

mkdir test-project — создаем новую папку для проекта

cd test-project — переходим в папку проекта

git init — инициализируем локальный репозиторий

touch README — создаем новый файл README

git add README — добавляем его к версионированию

git commit -m ‘first commit’ — делаем commit с коментарием о первом комите

git remote add origin http://gitlab.golovachcourses.com/Student/test-project.git — добавляем адрес удаленного репозитория в HTTP формате

git push -u origin master — отправляем изменения на сервер

git_first_commitТеперь если зайти в свой личный кабинет, то сначала увидим сообщение про создание новой ветки master в нашем тестовом проекте:

gitlab_new_branch_msgВ файлах появился новый файл README:

gitlab_new_READMEgitlab_new_README_code

но он пока пустой.

Галочка в зеленом кружочке сообщает что данная папка успешно подключена к VCS:

gitlab_first_commitИтак, мы создали первый тестовый проект, подключили его к удаленному репозиторию по HTTP протоколу и сделали первый commit первого файла — README.

SSH доступ к репозиторию

Попробуем теперь изменить файл README и отправить изменения на сервер посредством SSH протокола через Tortoise Git. Для удаленного обновления вашего кода через Tortoise Git необходимо настроить и добавить к аккануте новыю пару SSH ключей, используя PuTTY Key Generator:

putty_key_gen_test

Полученную пару ключей необходимо сохранить (Save public key && Save private key) в том же месте где и предыдущие для дальнейшей настройки Git (пусть это будут соответственно test@gitlab.golovachcourses.com.pub и test@gitlab.golovachcourses.com.ppk).

Теперь добавим к первому сгенерированный ключ в вашем профиле:

gitlab_profile_second_keytest_project_settingstest_project_settings_remote

В параметре Git -> Remote -> origin меняем ссылку на SSH вариант:

git@gitlab.golovachcourses.com:Student/test-project.git

и указываем новый PuTTY ключ.

Теперь наш локальный репозиторий в качестве протокола будет использовать SSH. Пробуем как это работает, для чего в уже существующий пустой файл README вносим любые правки и сохраняем.

Обратите внимание на то, что VCS реагирует на изменение локальной копии, которое не синхронизировано с удаленным:

git_changes

Есть две возможности провести синхронизацию:

  • отдельно по файлу (так как он у нас один, больше ничего в проекте нет)
  • либо по всей папке (что делают чаще всего)

В первом случае ПКМ на файле -> Git commit -> «master»…

Во втором случае ПКМ на папке -> Git Sync (этот вариант и рассмотрим как более общий):

git_syncделаем commit

git_sync_вводим описание commit-а

git_sync_descriptionлокальный commit прошел успешно, делаем push

git_sync_commit_okвводим пароль для ключа (passphrase, что вводили при создании, понадобится только в первый раз)

git_sync_push_passphraseвводим наш логин

git_sync_push_loginпароль

git_sync_push_passи наслаждаемся сообщением о том что произведен новый commit в основную ветку

gitlab_dashboard_new_commitи видим что в нашем удаленном файле, доступном в репозитории на сервере уже есть внесенные нами изменения

gitlab_dashboard_new_commitgitlab_new_codeИ теперь папка с «проектом» имеет одинаковую ревизию что локально что удаленно:

git_new_revision_ok

Git GUI клиенты

Помимо рассмотренного простейшего Tortoise Git (который на самом деле является не совсем GUI клиентом а скорее расширением оболочки), существует несколько других, для различных платформ: Git GUI. Из представленных заслуженное внимание привлекает Source Tree — добротный free инструмент от компании Atlassian.

Источник: http://gitlab.golovachcourses.com/root/manual/wikis/new_local_repository

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *