Назад | Перейти на главную страницу

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

У меня проблемы с 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 и заявляло, что этого пользователя нельзя использовать для входа в систему.

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

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

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

В моей ситуации я установил 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

Это может произойти, если в имени хоста стоит знак «-». (Хотя это законно согласно 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

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

Бег eval $(ssh-agent) исправил мою проблему.

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