6

Я пытаюсь запустить GitLab на моем сервере. Я следовал инструкциям по установке на странице gitlab github, и все прошло хорошо.

Проблема заключается в том, что когда я создаю репозиторий и пытаюсь выполнить команду «git push -u origin master», мне предлагается ввести «git @ localhost's password:»

Некоторые люди предложили добавить git в AllowedUsers в моем sshd conf, но у меня нет поля AllowedUsers, так что, похоже, это не проблема.

Я все еще довольно новичок в ssh, поэтому это может быть проблема с ssh-ключом, хотя я пытался добавить все соответствующие ssh-ключи в /home/git/.ssh/authorized_keys.

Любые предложения высоко ценится!

2 ответа2

4

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

Во-первых, вам нужно создать пару ключей: (это команды для машины linux, и я считаю, что они также работают на windows, если у вас установлен git для windows, который устанавливает среду cygwin)

cd ~/.ssh #create this dir if it's absent
ssh-keygen -t rsa -b 2048 #i like 2048 bit rsa keys, but you could use -b 1024 instead

когда будет предложено, дайте имя ключевому файлу, скажем, вы назвали его "my_key", он попросит вас ввести ключевую фразу. Если вы введете один из них, закрытый ключ (см. Ниже) будет зашифрован с помощью этой ключевой фразы, поэтому вам придется правильно установить ключевой файл и ввести кодовую фразу для выполнения операции git. Вы также можете оставить это поле пустым, что менее безопасно, но более удобно.

Это генерирует ~/.ssh/my_key и ~/.ssh/my_key.pub . Файл .pub - это открытый ключ, другой - закрытый ключ. Теперь вам нужно сделать две вещи:

  1. Дайте открытый ключ серверу
  2. Настройте свой ssh-клиент, чтобы знать о нем и использовать закрытый ключ

чтобы сделать 1., откройте my_key.pub в редакторе и скопируйте содержимое в буфер обмена. Затем войдите в gitlab через веб-интерфейс. В верхнем правом углу вы найдете случайно сгенерированную картинку, которая при наведении курсора даст вам две опции: "Мой профиль" и "Выход". Нажмите на первый. Справа от появившейся страницы вы увидите кнопку "Добавить открытый ключ". Нажмите на нее, и вы увидите страницу, где вы можете вставить открытый ключ, который вы скопировали. Дайте ему имя, нажмите "Сохранить", и все готово.

чтобы сделать 2. (снова в Linux), откройте (создайте, если необходимо) файл ~/.ssh/config и добавьте следующую строку:

IdentityFile ~/.ssh/my_key

Это заставляет ssh пытаться использовать закрытый ключ при входе на любой сайт, который пытается использовать аутентификацию по ключу.

Фон на ключах (если вы не знали): ключи, используемые ssh, называются асимметричными ключами. Существует "открытый ключ" и "закрытый ключ", и они генерируются как пара (они математически связаны). Все, что зашифровано с использованием открытого ключа, может быть расшифровано только с помощью личного ключа, и наоборот. ssh использует их для аутентификации: вы предоставляете серверу открытый ключ, а вашему клиенту - соответствующий закрытый ключ. Когда вы пытаетесь войти в систему, сервер в основном берет некоторые случайные данные, шифрует их с помощью открытого ключа и отправляет их клиенту. Клиент расшифровывает с помощью закрытого ключа и отправляет исходные случайные данные обратно на сервер. Затем сервер знает, что вы тот человек, о котором вы говорите (потому что ваш клиент смог успешно расшифровать).

1

@stochastic Основной причиной этого является проблема с несовпадением ssh-ключей.

У меня была та же проблема, и он не смог ввести ssh-ключ в профиль gitlab и позволить приложению сделать все остальное.

ssh-keygen -t rsa -C "здесь YourEmailUsedInGitlab"

Затем выполните шаг и просто вставьте его в свой профиль.

Важно: когда вы генерируете ключ за один сеанс на вашем компьютере. И в том же самом стремлении использовать это (мерзавец клон ...) это потерпит неудачу. Повторно войдите в вашу систему, и она будет работать.


Сделайте мне одолжение и поправьте мой английский :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .