Gitlab не работает с ключами SSH


10

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

Я убедился, что мои закрытые ключи правильно настроены как в Windows, так и в OS 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

Открытые ключи не настроены на клиенте - вам нужно убедиться, что ваши личные ключи на вашем клиенте. Открытые ключи отправляются на сервер.
EEAA

Обновил мой вопрос. Надеюсь, это поможет
Greyfox

Ответы:


10

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

Пожалуйста, попробуйте изменить каталог / 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}: {workspace} / {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

@ Джейсон, я только что отредактировал, чтобы объяснить более точно
sinm

Спасибо, это было для меня. Я вставил свой ключ ssh вручную, прежде чем использовать Gitlab для добавления ключа, и дублированные ключи вызывали проблемы.
футов Дан

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

Если вы используете переменные окружения для передачи ключа, вы должны закодировать их с помощью base64, иначе они, вероятно, потерпят неудачу с ошибкой, запрашивающей вашу фразу-пароль. Это означает, что ключ поврежден. Если ты видишь:

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

Затем base64 кодирует переменную SSH_PRIVATE_KEY. Если вы на OS 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.