GitLab требует git @ localhost пароль для отправки в репозиторий

8527
DevinR

Я пытаюсь запустить 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.

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

6

2 ответа на вопрос

4
stochastic

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

@stochastic The main reason for this is a problem with mismatching ssh-keys.

I had have the same issue and it was not able to enter ssh-key in a profile of gitlab and let the app do the rest.

ssh-keygen -t rsa -C "hereYourEmailUsedInGitlab"

Then follow the step and just pasté it into your profile.

Important: When you generate the key in one session on your machine. And in the same sassion trying to use it (git clone ...) it will fail. Relogin into your system and it will work.


Do me a favor and correct my english :)

Похожие вопросы