Gitlab не працює з ключами SSH


11

У мене виникають проблеми з Gitlab. Я використовував наступний посібник для установки та налаштування Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md . Установка, здавалося, пройшла добре, і все. Здається, веб-додаток працює нормально. Однак я не в змозі клонувати, тягнути, штовхати, в основному я не можу використовувати Gitlab. Я бачив 403 помилки з HTTP та дозволом, відхиленим при спробі клонування через SSH.

Я переконався, що мої приватні ключі правильно налаштовані як на Windows, так і на ОС X. Я бачу відкриті ключі на сервері. Я додав наступне у свій конфігураційний файл у ~ / .ssh.config

Host {hostname}
    User git
    Hostname {hostname}
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa

Це я бачу в / var / log / secure

Jan 14 17:31:48 dev_version_control sshd[3696]: Connection closed by 192.168.17.113
Jan 14 17:32:18 dev_version_control sshd[3700]: Connection closed by 192.168.17.113

/var/log/messageЧи не роль , коли я спробував з допомогою Git або SSH

Я не впевнений, куди подітися звідси. Будь-які пропозиції?

Я не знаю, що ви маєте на увазі під SSH, використовуючи git ім'я користувача. Я використав посібник, який не створив пароль для користувача git і зазначив, що користувач не може використовуватися для входу.


Чи можете ви SSH на сервер Git як "git" користувача? Чи можете ви спробувати додати параметр '-vvv', щоб отримати додатковий висновок про те, чому з'єднання закрито? Можливо, варто також перевірити файли / var / log / secure та / var / log / messages, щоб побачити, чи є там якісь помилки.
jaseeey

Публічні ключі не налаштовані на клієнті - вам потрібно переконатися, що ваші приватні ключі є у вашого клієнта. Відкриті ключі йдуть на сервер.
ЄЕАА

Оновлено моє запитання. Сподіваємось, це допомагає
greyfox

Відповіді:


10

За умови, що ви завантажили свій приватний ключ на клієнта, то це здається, що це може бути проблема дозволу в домашній каталог користувача "git" та.

Спробуйте змінити / home / git-каталог на маску 0711:

chmod 0711 /home/git

Переконайтеся, що в каталозі /home/git/.ssh маска 0700:

chmod 0700 /home/git/.ssh

Переконайтеся, що файл /home/git/.ssh/authorized_keys має маску 0600:

chmod 0600 /home/git/.ssh/authorized_keys

Замініть / home / git будь-яким домашнім каталогом для користувача "git", якщо це було в навчальному посібнику. Якщо це не дозволи, то будь ласка, дайте коментар, і ми побачимо, що ще може бути проблемою.


Можливо, це було питання. Мені відомо, що я можу клонувати за допомогою git clone git @ {hostname}: {робоча область} / {repository} на моєму Mac. На жаль, я залишив свою машину Windows на роботі, тому мені потрібно буде спробувати завтра. Чи автентифікація відкритого / приватного ключа не працює над HTTP за допомогою Gitlab? У мене було враження, що так працює Github, але я можу помилитися з цим.
greyfox

Аутентифікація відкритого / приватного ключа працює лише через SSH. Якщо ви використовуєте HTTP, вам потрібно буде використовувати своє ім’я користувача та пароль, щоб зробити що-небудь. Якщо ви використовуєте нову версію Git, наприклад v1.8, то вона повинна запропонувати вам ввести ім’я користувача та пароль. Старіші версії Git цього не роблять, тому вам доведеться додати своє ім’я користувача та пароль у https://username:password@git.server.com/repo.git
рядок

Аааа, це має набагато більше сенсу зараз. Так чи додаток GitHub для Windows зберігає облікові дані? Дякую за допомогу!
greyfox

Я не дуже часто використовував додаток GitHub Windows, але, думаю, для пам'яті потрібен логін, коли ви відкриваєте його, тому я б сказав, що зберігає облікові дані доступу, щоб заощадити вам при вході в них весь час.
jaseeey

1

Переконайтеся, що у вас є лише один запис для вашого відкритого ключа (який був імпортований через веб-обличчя), /home/git/.ssh/authorized_keysі цей ключ має префікс та заголовок gitlab. Іншими словами, якщо ви додали один і той же ключ вручну перед встановленням gitlab, видаліть його.


Ви можете мати кілька ключів там, і ви зможете увійти, якщо ваш приватний ключ може збігатися ...
jaseeey

@Jason, я щойно відредагував, щоб пояснити точніше
син

Дякую, це було для мене. Перш ніж використовувати Gitlab, щоб додати ключ, а дублюючі ключі викликали проблеми, я вручив ключ ssh вручну.
6 футів Ден

1

Я також рекомендую перевірити, чи має користувач належний дозвіл на клонування / витягнення / натискання в gitlab. Я просто витрачаю занадто багато часу на перегляд конфігурацій ssh ​​/ https, коли причиною проблеми був користувач у gitlab, який не мав достатнього дозволу ...


1

У моїй ситуації я встановив gitlab через пакети FreeBSD. Gitlab SSH не працював. Причиною цього став неправильний домашній каталог для git: (vipw)

git:*:211:211::0:0:gitosis user:/usr/local/git:/bin/sh

Я змінив це на:

git:*:211:211::0:0:gitosis user:/home/git:/bin/sh

1

Це може статися, якщо хост має "-" у своєму імені. (Хоча це є законним згідно з RFC 952. )

ssh запитає мене на пароль для будь-якого хоста, у якого, як правило, є ім'я "-". Здається, це проблема суто з розбором файлу конфігурації ssh, оскільки додавання псевдоніма до ~ / .ssh / config (і використання цього псевдоніма у моїх віддалених URL-адресах git) вирішило проблему.

Іншими словами, спробуйте помістити щось подібне до свого C: / Users / {username} /. Ssh / config

Host {a}
    User git
    Hostname {a-b.domain}
    IdentityFile C:/Users/{username}/.ssh/id_rsa

і де у вас є віддалений від форми

origin  git@a-b.domain:repo-name.git

видаліть його, а потім повторно додайте за допомогою форми

origin  git@a:repo-name.git

1

Якщо ви використовуєте змінні середовища для передачі ключа, вам слід6464 кодувати їх, інакше вони, ймовірно, не зможуть із помилкою із запитом вашої парольної фрази. Це означає, що ключ пошкоджений. Якщо ви бачите:

$ ssh-add <(echo "$SSH_PRIVATE_KEY")
Enter passphrase for /dev/fd/63: ERROR: Job failed: exit code 1

Тоді base64 кодує змінну SSH_PRIVATE_KEY. Якщо ви перебуваєте в ОС X,

cat ~/.ssh/ssh_key_for_project | base64 | pbcopy

буде кодувати його та скопіювати у буфер обміну. Тепер змініть рядок сценарію .gitlab-ci.yml на

- ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)


0

Моєю проблемою було те, що файл приватних ключів id_rsa, створений і збережений puttygen, має інший формат, ніж той, створений на машині ubuntu. Після того як я створив парні ключі з машини ubuntu, скопіюйте ці файли назад на машину Windows у папку% UserProfile% .ssh, а потім додайте новий створений відкритий ключ у Gitlab. Більше не було дозволу для мене

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.