@hottab_1

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

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

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


Команда ssh -v git@gitlab.iso-team.ru выдает следующее:
Команда 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

  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
@hottab_1 Автор вопроса
Всем выражаю большую благодарность за помощь, каждый совет однозначно помог.
Решение оказалось как всегда на поверхности.
Все дело было в том, что файл sshd_config на сервере, который находится по следующему пути: /etc/ssh в строчке AllowUsers содержал всего одного доступного пользователя, добавил пользователя git, под которым происходит авторизация и все стало работать.
Строка AllowUsers после внесения изменений стал выглядеть вот так:
AllowUsers youruser git

Расписываю алгоритм более подробно, на случай если кто-то столкнется с такой проблемой.
  1. Открываем файл sshd_config на сервере, который находится по следующему пути /etc/ssh
  2. Ищем строку AllowUsers, скорее всего там будет прописан ваш пользователь под которым обычно происходит авторизация по SSH. Добавляем через пробел пользователя git и строка получается вот такой: AllowUsers youruser git
    Сохраняем изменения

  3. Перезагружаем sshd командой: sudo /etc/init.d/ssh restart
  4. Получаем ключ для Gitlab, много где описано как это сделать, я сделал следующим образом:
    Вводим команду на локальной машине, с которой будете работать:
    ssh-keygen -t rsa -f ~/.ssh/gitlab
    После переходим в папку .ssh и копируем ключ из файла gitlab.pub, идем в веб-интерфейс gitlab и войдя под нужным пользователем добавляем ему ключ.
  5. Теперь создадим файл config на локальной машине в папке .ssh, он нужен, чтобы указать какой ключ для какого соединения применять, так как подключение на сервер у нас происходит тоже по SSH.
    Данный файл получился вот такого содержания:
    Host 45.80.69.169
        IdentityFile /home/kramdmitriy/.ssh/id_rsa
        port 22
    Host gitlab.iso-team.ru
        IdentityFile /home/kramdmitriy/.ssh/gitlab
        port 22

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

Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@ProFfeSsoRr
Сис.админ по Linux
Смотри, у тебя есть машина, на которой стоит gitlab. И на этой машине есть ssh сервер. И в него ты попадаешь. А тебе надо попадать в ssh сервер самого гитлаба, который знает про твои git проекты. Проще всего перевесить ssh сервер машины на нестандартный порт.
Ответ написан
hempy80
@hempy80
Внесистемный администратор
Пользователь системы и пользователь gitlab это два разных пользователя. Инструкция
Ответ написан
@ZooMik
Эту команду выполняете на машине с которой планируете подключаться, под своей учеткой из под которой работаете на этой же машине:
ssh-keygen -t rsa -f ~/.ssh/gitlab
Затем копируете ключ на сервер, где развернут гитлаб с помощью команды:
ssh-copy-id  -i ~/.ssh/gitlab.pub git@gitlab.iso-team.ru

Попросит ввести пароль от пользователя git на сервере гитлаб.
После этого
ssh git@gitlab.iso-team.ru
Должно работать без пароля. Если вы об этом просили.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы