Как подключиться к gitlab по ssh
Перейти к содержимому

Как подключиться к gitlab по ssh

  • автор:

Голобурдин://

git pull/push просит логин и пароль на каждой операции и вы задолбались их вводить? Тогда мы идём к вам:)!

Первое. Генерим ssh ключ:

ssh-keygen -t rsa -b 4096

Второе. Копируем созданный ключ (файл ~/.ssh/id_rsa.pub ) в глобальные настройки профиля GitLab (если ссылка не работает, идти в Settings — > SSH Keys).

Третье. Проверяем, что локальный Git репозиторий работает с удаленным сервером через SSH вместо HTTP или HTTPS:

Если вы видите что-то вроде origin git@ , то всё в порядке, если нет — переключаемся на SSH ссылку origin-сервера, её можно скопировать на странице репозитория в веб-интерфейсе самого Gitlab или Github:

Меняем удаленный Git сервер для работы через SSH вместо HTTPS:

git remote set-url origin git@gitlab.com:dbms/vetexpert-vuejs-mobileapp

Ура! Теперь команды git pull/push не будут просить логина и пароля.

Не могу подключиться к gitlab по SSH, почему?

Добрый день!
Есть развернутый на своем сервере гитлаб, он успешно работает, выгружаются проекты, все создается, веб-интерфейс тоже работает.
Раньше не так часто приходилось выгружать проекты, так как почти не было правок, поэтому при выгрузке в гитлаб — просто вводили логин и пароль.
Сейчас появилась потребность в частых коммитах, и вводить логин и пароль часто не очень удобно.
Решил настроить авторизацию через SSH ключ.

  1. Создаю ключ следующей командой: ssh-keygen -t rsa -f ~/.ssh/gitlab
  2. Копирую данные из файла gitlab.pub и вставляю их в gitlab, ключ успешно добавляется
  3. Пытаюсь клонировать проект запрашивает пароль, пытался вводить пароль от своего пользователя — пароль не верный

Команда ssh -v git@gitlab.iso-team.ru

OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
debug1: Reading configuration data /home/kramdmitriy/.ssh/config
debug1: /home/kramdmitriy/.ssh/config line 1: Applying options for gitlab.iso-team.ru
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to gitlab.iso-team.ru [45.80.69.169] port 22.
debug1: Connection established.
debug1: identity file /home/kramdmitriy/.ssh/gitlab type 0
debug1: key_load_public: No such file or directory
debug1: identity file /home/kramdmitriy/.ssh/gitlab-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 pat OpenSSH* compat 0x04000000
debug1: Authenticating to gitlab.iso-team.ru:22 as ‘git’
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:jn3djC8AvaKRIeHzBy4wFFu1pl7TKuMDEwbreaZ5Qbs
debug1: Host ‘gitlab.iso-team.ru’ is known and matches the ECDSA host key.
debug1: Found key in /home/kramdmitriy/.ssh/known_hosts:1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:7rdux0TUfos0dlwQomw4RxqaJfxIbT4YmtcTfSFhIak /home/kramdmitriy/.ssh/gitlab
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password

  • Вопрос задан более трёх лет назад
  • 9218 просмотров

10 комментариев

Простой 10 комментариев

FanatPHP

по идее все должно работать
я в таких случаях смотрю лог ssh на сервере

FanatPHP

ну и на всякий случай я бы сделал ключ со стандартным именем

кстати тоже на свякий случай, какие права на приватный ключ?

hottab_1 @hottab_1 Автор вопроса
FanatPHP, Попробовал со стандартным ключом, на файлы выставил права 777
Вот что выдает:
Посмотреть

OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to gitlab.iso-team.ru [45.80.69.169] port 22.
debug1: Connection established.
debug1: identity file /home/kramdmitriy/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /home/kramdmitriy/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/kramdmitriy/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/kramdmitriy/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/kramdmitriy/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/kramdmitriy/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/kramdmitriy/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/kramdmitriy/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 pat OpenSSH* compat 0x04000000
debug1: Authenticating to gitlab.iso-team.ru:22 as ‘git’
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:jn3djC8AvaKRIeHzBy4wFFu1pl7TKuMDEwbreaZ5Qbs
debug1: Host ‘gitlab.iso-team.ru’ is known and matches the ECDSA host key.
debug1: Found key in /home/kramdmitriy/.ssh/known_hosts:1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:7NCMF5XYGXRXzkvqMYNFGGGanDMNXjd4D8jAWw47XA8 /home/kramdmitriy/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/kramdmitriy/.ssh/id_dsa
debug1: Trying private key: /home/kramdmitriy/.ssh/id_ecdsa
debug1: Trying private key: /home/kramdmitriy/.ssh/id_ed25519
debug1: Next authentication method: password

hottab_1, вручную не пробовали ключ указывать?

ssh -i /home/kramdmitriy/.ssh/gitlab git@gitlab.iso-team.ru

Судя по всему ssh при подключении использует данный публичный ключ:
/home/kramdmitriy/.ssh/id_ed25519-cert
Находит к данному публичному ключу парный приватный ключ. И начинает аутентификацию по паролю, который возможно, был задан при создании ключа.

FanatPHP

ЭЙ! КАКОЕ 777!
На ключ должно быть СТРОГО 600
hottab_1 @hottab_1 Автор вопроса
FanatPHP, Спасибо, выставил 600, получил уже другое сообщение:
spoiler

OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to gitlab.iso-team.ru [45.80.69.169] port 22.
debug1: connect to address 45.80.69.169 port 22: Connection refused
ssh: connect to host gitlab.iso-team.ru port 22: Connection refused

Как работать с GitLab

Как работать с GitLab

Сегодня поговорим об азах взаимодействия с одной из самых популярных git-систем.

Что такое GitLab

Сейчас почти никто не пишет код в одиночку. Команды инженеров и разработчиков растут, как на дрожжах. Работая в группах, программисты используют системы управления исходным кодом на базе git, специального инструмента, позволяющего хранить данные разрабатываемого проекта в сети и совместно редактировать его с учетом определенных правил и методик взаимодействия. Самый известный подобный сервис – GitHub. А GitLab – это его собрат, выполняющий те же функции, но устроенный несколько иначе.

GitLab позволяет управлять репозиториями с кодом, отслеживать ошибки в разрабатываемых программах, публиковать код и тестировать его. Это незаменимый инструмент для каждого, кто программирует не в одиночку.

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей

Разница между GitLab и GitHub

Оба сервиса – системы управления репозиториями на базе git. Принципиальных отличий между ними нет. GitHub появился раньше и стал чуть ли не синонимом git, поэтому он популярнее и для многих является единственной системой для управления репозиториями.

Но GitLab есть что предложить с точки зрения функциональности, поэтому все чаще наблюдается переход пользователей с GitHub на GitLab. В частности, это касается разработчиков-новичков, которые пока еще не «приросли» к GitHub.

В связи с растущей популярностью GitLab я и решил познакомить вас с этим сервисом поближе.

Инструкция по использованию GitLab

Перед началом работы с сервисом, нужно создать учетную запись. Процедура эта весьма тривиальна:

  • Заходим на официальный сайт GitLab.
  • В верхнем левом углу находим кнопку Login и жмем по ней.
  • Через пару секунд перед вам откроется форма входа в систему, а под ней будет ссылка на форму регистрации (Register now). Переходим по ней. Кнопка регистрации в GitLab
  • Заполняем данные для регистрации (классические данные: адрес электронной почты, пароль, логин и т.п.). Жмем на кнопку Register.
  • В течение пары минут на указанную при регистрации почту «упадет» сообщение со ссылкой для подтверждения создания аккаунта. Переходим по ней. Письмо подтверждения регистрации от GitLab

Учетная запись готова. Теперь можно переходить непосредственно к знакомству с GitLab.

Как создать проект

Проектом в GitLab считается глобальное рабочее пространство, в котором будет размещен репозиторий с файлами ваших сайтов и приложений. А также в нем можно взаимодействовать с коллегами и использовать другие возможности сервиса.

Экран создания новой группы

Поэтому при первом входе под своей учетной записью GitLab попросит вас указать род деятельности, наличие или отсутствие команды, имя рабочей группы и название проекта.

После формирования проекта можно переходить непосредственно к созданию репозиториев, загрузке программ в GitLab и т.п.

Как создать репозиторий

Чтобы воспользоваться репозиторием, нужно создать новый проект:

  • Кликаем по иконке со значком + в панели управления. Кнопка создания нового репозитория в GitLab
  • Выбираем пункт New project/repository.Пункт
  • Затем кликаем по Create blank project.
  • Указываем его имя и другие запрашиваемые параметры (можно указать, публичным будет репо или приватным) и нажимаем на кнопку Create Project.

Вместе с проектом сформируется новый git-репозиторий. Теперь можно с ним взаимодействовать, то есть загружать файлы, делать коммиты, создавать различные ветки для разработки продукта и мерджить их при необходимости.

Как загрузить файлы сайта/приложения в GitLab

Тут есть 3 пути.

Первый – используем веб-интерфейс GitLab
  • На главной странице проекта ищем строку The repository for this project is empty, а под ней кнопку Upload File и нажимаем на нее.
  • GitLab предложит выбрать файлы проекта для загрузки и последующей работы с ними. Выбираем все файлы, что используем при разработке и выгружаем.

Также можно использовать WebIDE, встроенную в GitLab, чтобы прямо в браузере писать код и создавать файлы для своего приложения/сайта.

Второй – используем командную строку

Тут все сложнее, но на самом GitLab опубликована короткая и доходчивая инструкция по подключению к сервису через командную строку, используя классический git-клиент.

Инструкция по работе с git

Третий – используем сторонний git-клиент

Существуют приложения в духе Tower и Sublime Merge, позволяющие управлять репозиториями, делать коммиты и пушить изменения в проекты при помощи удобного графического интерфейса. Можно подключиться к GitLab с помощью одной из таких программ.

Как добавить SSH-ключ для подключения к репозиторию

SSH-ключи можно использовать для авторизации в GitLab и для управления репозиториями по протоколу Secure Shell. Чтобы это сделать:

  1. Генерируем ключ с помощью команды ssh-keygen (вводим ее в терминал). Интерфейс генератор SSH-ключей
  2. Генератор предложит сохранить получившийся ключ. Менять директорию, куда сохраняется ключ, необязательно. Папка для сохранения SSH-ключа
  3. Затем утилита попросит ввести пароль. Его тоже можно не вводить. Просто жмем на Enter. Запрос на ввод пароля для SSH-ключа
  4. В указанной на втором этапе папке появится файл с ключом в формате .pub. В нем лежит ключ. Нужно скопировать его.
  5. Возвращаемся на сайте GitLab. Открываем раздел SSH-keys, вставляем ключ в специально отведенное для этого поле и нажимаем на кнопку Add key. Интерфейс для ввода SSH-ключей в GitLab

Как работать с ветками

Ветки – это инструмент для создания дополнительных вариаций приложения/сайта, которые позволяют вести разработку новых функций, не затрагивая при этом основное приложение, доступное для пользователей.

По умолчанию в GitLab доступна только одна ветка – master. Но ее чаще используют не для разработки, а для публикации готовых сборок проекта, которые нестрашно превратить в релиз для масс.

Поэтому принято создавать новые ветки для разработки дополнительных функций, а уже потом объединять их с основной.

Как создавать ветки

Ветки – не уникальная для GitLab функция. Это часть git, поэтому, как и в случае с репозиториями, тут можно пойти тремя путями:

Кнопка создания дополнительной ветки в GitLab

  1. На сайте GitLab в окне управления репозиторием нажать на кнопку + справа от названия ветки, а потом выбрать пункт New branch в выпадающем меню.
  2. Можно создать новую ветку через git-клиент в терминале с помощью команды git checkout -b [название новой ветки].
  3. Или воспользоваться аналогичной функций в используем графическом git-клиенте (Tower, Sublime Merge, GitFox и т.п.).

Любой из способов позволит создавать новую ветку, в которую после этого можно будет отправлять коммиты и делать пуши.

Мерджинг веток

Мерджинг (или объединение) веток – это механизм слияния двух наборов функций одной программы, позволяющий переносить функции из дополнительных веток в основную ветку разработки, где лежит приложение. Результат увидят еще и пользователи, а не только разработчики.

Запрос на объединение веток будет появляться на сайте GitLab каждый раз, когда вы будете вносить изменения в код одной или нескольких веток.

Выглядит это следующим образом:

Кнопка создания запроса на объединение веток

  • На сайте появляется большая синяя кнопка Create merge request. Кликаем по ней.
  • Затем рассказываем о своем запросе (поясняем, для чего он делается).
  • Указываем автор запроса в поле Assignee.
  • Указываем человека, который будет проверять запрос в поле Reviewer.
  • Потом указываем Milestone (если используете их).
  • Ставим теги.
  • И нажимаем на Create merge request.
  • Если с запросом все ок, то проверяющий нажмет на кнопку Merge, и весь код перекочует в основную ветку проекта (ну или ту, которую указал автор запроса).

Как добавлять пользователей в проект

К разработке своего приложения/сайта всегда можно привлечь людей со стороны:

Интерфейс добавления новых пользователей к репозиторию

  • Для этого кликаем по кнопке Project information в боковой панели GitLab.
  • Выбираем пункт Members.
  • В графу GitLab member or Email address вписываем ник GitLab-пользователя или его email-адрес.
  • Выбираем для него роль (гость, наблюдатель, разработчик).
  • Также указываем время действия приглашения (в указанный день приглашенный будет исключен из проекта).
  • А потом кликаем на Invite.

Если выбранный человек согласится присоединиться, то ваша команда расширится.

Как создавать баг-репорты

В git-системах есть инструменты, помогающие оповещать разработчиков об ошибках и обсуждать их как с пользователями, так и с коллегами.

Речь идет о разделе Issues. Если возникла проблема, то нужно сообщить о ней тут. Для этого:

  • Открываем раздел Issues в боковой панели управления.
  • Затем нажимаем на кнопку New issue. Кнопка создания нового issue
  • Даем имя обнаруженной проблеме, а затем подробно описываем ее в разделе Description.
  • Затем назначаем ответственного в пункте Assignee и срок, в течение которого нужно найти решение найденной проблемы.
  • А потом нажимаем на кнопку Create issue. Интерфейс создания нового issue

Как удалить проект

  • Открываем настройки проекта и переходим во вкладку General.
  • Листаем ее до пункта Advanced и справа от него ищем кнопку Expand, которая откроет доступ к дополнительным параметрам.
  • Вновь пролистываем появившееся меню до упора вниз, пока не наткнемся на кнопку Delete project.
  • Нажимаем на нее и вписываем название проекта, чтобы его удалить.

Вместо заключения

На этом все. Я рассмотрел базовые возможности GitLab и намеренно не затрагивал аналитические инструменты, интеграцию с Kubernetes и дополнительные функции, пытаясь сконцентрироваться на важнейших концептах GitLab и git. Это то, что вам необходимо для старта, независимо от того, пользовались вы ранее другими системами управлениями репозиториями или нет.

GitLab – настройка ключа SSH

SSH означает Secure Shell или Secure Socket Shell, используемые для управления сетями, операционными системами и конфигурациями, а также аутентифицируется на сервере GitLab без использования имени пользователя и пароля каждый раз. Вы можете установить ключи SSH, чтобы обеспечить надежное соединение между компьютером и GitLab. Перед генерацией ssh ​​keygen вам необходимо установить Git в вашей системе.

Создание ключа SSH

Шаг 1 – Чтобы создать ключ SSH, откройте командную строку и введите команду, как показано ниже –

C:\−ssh-keygen

Появится запрос «Введите файл, в котором нужно сохранить ключ (//.ssh/id_rsa):», просто введите имя файла и нажмите клавишу ввода. Затем появится запрос на ввод пароля: «Введите кодовую фразу (пустой, без пароля):». Введите какой-нибудь пароль и нажмите ввод. Вы увидите сгенерированный ключ SSH, как показано на рисунке ниже –

GitLab SSH ключ

Шаг 2 – Теперь войдите в свою учетную запись GitLab и выберите опцию « Настройки» .

GitLab SSH ключ

Шаг 3 – Чтобы создать ключ SSH, нажмите вкладку Ключи SSH в левой части меню.

GitLab SSH ключ

Шаг 4 – Теперь перейдите на диск C, вы увидите файл с расширением .pub, который был создан на первом шаге.

GitLab SSH ключ

Шаг 5 – Затем откройте файл key.pub , скопируйте ключ SSH и вставьте его в выделенное поле ключа, как показано на рисунке ниже –

GitLab SSH ключ

Шаг 6 – Нажмите кнопку « Добавить ключ» , чтобы добавить ключ SSH в ваш GitLab. Вы увидите отпечаток пальца (это короткая версия ключа SSH), заголовок и дату создания, как показано на рисунке ниже –

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

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