Перейти к содержимому

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

  • автор:

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

Команда ssh -v [email protected] выдает следующее:
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: [email protected] MAC: compression: none
debug1: kex: client->server cipher: [email protected] 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

Отслеживать
задан 20 мая 2020 в 11:10
Дмитрий Храмов Дмитрий Храмов
21 2 2 бронзовых знака

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Всем выражаю большую благодарность за помощь, каждый совет однозначно помог. Решение оказалось как всегда на поверхности. Все дело было в том, что файл 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

Отслеживать
ответ дан 21 мая 2020 в 14:42
Дмитрий Храмов Дмитрий Храмов
21 2 2 бронзовых знака

Спасибо, крутое решение, совершенно не лежащее на поверхности, и очень хорошо, что Вы его нашли. Думаю, мы просто по разному устанавливали gitlab, я ставил его явно каким то скриптом (omnibus?), в котором эта особенность, скорее всего, была учтена. Уверен, что такое решение еще пригодится в других случаях.

21 мая 2020 в 16:17

Очень знакомая ситуация.

С этой авторизацией по ключам всегода просто голову сломаешь, пока заработает.

Я предлагаю следующее: давайте сравним файлы на клиенте и на сервере?

У меня есть работающий gitlab, на котором я когда то настроил авторизацию. При этом у меня в гитлаб импортирован ключ, а на клиенте в папке .ssh есть следующие файлы:

id_rsa id_rsa.pub known_hosts 

И у меня работает всё, что связано с клонированием, коммитами и т.п. по протоколу ssh.

Но! Залогиниться пользователь сервера, котрого я создал на gitlab, по ssh не может. я ПОДОЗРЕВАЮ что для таких пользователей просто нет прав на interactive login.

При попытке залогтниться по ssh с ключем -v происходит вот что:

ssh -v [email protected] OpenSSH_7.3p1, OpenSSL 1.0.2k 26 Jan 2017 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Connecting to gitlab0.junecat.ru [192.168.10.57] port 22. debug1: Connection established. debug1: identity file /c/Users/davydov/.ssh/id_rsa type 1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/davydov/.ssh/id_rsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/davydov/.ssh/id_dsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/davydov/.ssh/id_dsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/davydov/.ssh/id_ecdsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/davydov/.ssh/id_ecdsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/davydov/.ssh/id_ed25519 type -1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/davydov/.ssh/id_ed25519-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_7.3 debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.8 debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.8 pat OpenSSH* compat 0x04000000 debug1: Authenticating to gitlab0.junecat.ru:22 as 'konst-developer' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: [email protected] debug1: kex: host key algorithm: ecdsa-sha2-nistp256 debug1: kex: server->client cipher: [email protected] MAC: compression: none debug1: kex: client->server cipher: [email protected] MAC: compression: none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ecdsa-sha2-nistp256 SHA256:8dMOgDXYjZWRj+bqEacWKTt00uppdB1A2cL/0GL4Ua8 debug1: Host 'gitlab0.junecat.ru' is known and matches the ECDSA host key. debug1: Found key in /c/Users/davydov/.ssh/known_hosts:2 debug1: rekey after 134217728 blocks debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: rekey after 134217728 blocks debug1: SSH2_MSG_NEWKEYS received 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 RSA public key: /c/Users/davydov/.ssh/id_rsa debug1: Authentications that can continue: publickey,password debug1: Trying private key: /c/Users/davydov/.ssh/id_dsa debug1: Trying private key: /c/Users/davydov/.ssh/id_ecdsa debug1: Trying private key: /c/Users/davydov/.ssh/id_ed25519 debug1: Next authentication method: password [email protected]'s password: 

Навскидку — возмжны следующие проблемы:

1) неправильный тип ключа. Что то типа того, что очень современный гитлаб требует ключей не менее какой то длинны. Но это он должен был бы сказать в явном виде при импорте ключа.

2) Неправильные (слишком «широкие») права на приватную часть ключа. Но при этом git clone ругалась бы ЯВНО намекая на то, что права неправильные

3) предлагаю эксперимент: у Вас есть ключ — приватная и публичная часть. Создайте в вируалочке маленький линуксовый сервачок и настройте на нём авторизацию при ssh — логине ПО ЭТИМ САМЫМ КЛЮЧАМ. (как это сделать — гуглится, например, здесь: https://www.digitalocean.com/community/tutorials/ssh-ubuntu-18-04-ru). Если авторизация заработает — значит, дело не в ключах, а в гитлабе. Возможно, ему протсо не хватает какой то галочки, тем более что там от версии к версии интерфейс меняется, видно, есть специальные люди для этого в команде 🙂

Если могу Вас навести еще на какие то мысли — пишите, постараюсь помочь

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), заголовок и дату создания, как показано на рисунке ниже –

Не могу подключиться к 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

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

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

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

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 не будут просить логина и пароля.

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

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