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

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

ну и на всякий случай я бы сделал ключ со стандартным именем
кстати тоже на свякий случай, какие права на приватный ключ?
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
Находит к данному публичному ключу парный приватный ключ. И начинает аутентификацию по паролю, который возможно, был задан при создании ключа.

ЭЙ! КАКОЕ 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

Сегодня поговорим об азах взаимодействия с одной из самых популярных git-систем.
Что такое GitLab
Сейчас почти никто не пишет код в одиночку. Команды инженеров и разработчиков растут, как на дрожжах. Работая в группах, программисты используют системы управления исходным кодом на базе git, специального инструмента, позволяющего хранить данные разрабатываемого проекта в сети и совместно редактировать его с учетом определенных правил и методик взаимодействия. Самый известный подобный сервис – GitHub. А GitLab – это его собрат, выполняющий те же функции, но устроенный несколько иначе.
GitLab позволяет управлять репозиториями с кодом, отслеживать ошибки в разрабатываемых программах, публиковать код и тестировать его. Это незаменимый инструмент для каждого, кто программирует не в одиночку.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Разница между GitLab и GitHub
Оба сервиса – системы управления репозиториями на базе git. Принципиальных отличий между ними нет. GitHub появился раньше и стал чуть ли не синонимом git, поэтому он популярнее и для многих является единственной системой для управления репозиториями.
Но GitLab есть что предложить с точки зрения функциональности, поэтому все чаще наблюдается переход пользователей с GitHub на GitLab. В частности, это касается разработчиков-новичков, которые пока еще не «приросли» к GitHub.
В связи с растущей популярностью GitLab я и решил познакомить вас с этим сервисом поближе.
Инструкция по использованию GitLab
Перед началом работы с сервисом, нужно создать учетную запись. Процедура эта весьма тривиальна:
- Заходим на официальный сайт GitLab.
- В верхнем левом углу находим кнопку Login и жмем по ней.
- Через пару секунд перед вам откроется форма входа в систему, а под ней будет ссылка на форму регистрации (Register now). Переходим по ней.

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

Учетная запись готова. Теперь можно переходить непосредственно к знакомству с 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-клиент
Существуют приложения в духе Tower и Sublime Merge, позволяющие управлять репозиториями, делать коммиты и пушить изменения в проекты при помощи удобного графического интерфейса. Можно подключиться к GitLab с помощью одной из таких программ.
Как добавить SSH-ключ для подключения к репозиторию
SSH-ключи можно использовать для авторизации в GitLab и для управления репозиториями по протоколу Secure Shell. Чтобы это сделать:
- Генерируем ключ с помощью команды ssh-keygen (вводим ее в терминал).

- Генератор предложит сохранить получившийся ключ. Менять директорию, куда сохраняется ключ, необязательно.

- Затем утилита попросит ввести пароль. Его тоже можно не вводить. Просто жмем на Enter.

- В указанной на втором этапе папке появится файл с ключом в формате .pub. В нем лежит ключ. Нужно скопировать его.
- Возвращаемся на сайте GitLab. Открываем раздел SSH-keys, вставляем ключ в специально отведенное для этого поле и нажимаем на кнопку Add key.

Как работать с ветками
Ветки – это инструмент для создания дополнительных вариаций приложения/сайта, которые позволяют вести разработку новых функций, не затрагивая при этом основное приложение, доступное для пользователей.
По умолчанию в GitLab доступна только одна ветка – master. Но ее чаще используют не для разработки, а для публикации готовых сборок проекта, которые нестрашно превратить в релиз для масс.
Поэтому принято создавать новые ветки для разработки дополнительных функций, а уже потом объединять их с основной.
Как создавать ветки
Ветки – не уникальная для GitLab функция. Это часть git, поэтому, как и в случае с репозиториями, тут можно пойти тремя путями:

- На сайте GitLab в окне управления репозиторием нажать на кнопку + справа от названия ветки, а потом выбрать пункт New branch в выпадающем меню.
- Можно создать новую ветку через git-клиент в терминале с помощью команды git checkout -b [название новой ветки].
- Или воспользоваться аналогичной функций в используем графическом 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.

- Даем имя обнаруженной проблеме, а затем подробно описываем ее в разделе Description.
- Затем назначаем ответственного в пункте Assignee и срок, в течение которого нужно найти решение найденной проблемы.
- А потом нажимаем на кнопку Create 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, как показано на рисунке ниже –

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

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

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

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

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