GitLab требует git@localhost пароль для отправки в репозиторий
Я пытаюсь запустить 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 ответа
Правильный способ доступа к репозиторию, управляемому 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 - это открытый ключ, другой - закрытый ключ. Теперь вам нужно сделать две вещи:
- Дайте открытый ключ серверу
- Настройте свой ssh-клиент, чтобы знать о нем и использовать закрытый ключ
чтобы сделать 1., откройте my_key.pub в редакторе и скопируйте содержимое в буфер обмена. Затем войдите в gitlab через веб-интерфейс. В верхнем правом углу вы найдете случайно сгенерированную картинку, которая при наведении на вас подсказывает две опции: "Мой профиль" и "Выйти". Нажмите на первый. Справа от полученной страницы вы увидите кнопку "добавить открытый ключ". Нажмите на нее, и вы увидите страницу, на которой вы можете вставить открытый ключ, который вы скопировали. Дайте ему имя, нажмите "Сохранить", и все готово.
сделать 2. (опять же на linux) открыть (создать при необходимости) файл ~/.ssh/config
и добавьте следующую строку:
IdentityFile ~/.ssh/my_key
Это заставляет ssh пытаться использовать закрытый ключ при входе на любой сайт, который пытается использовать аутентификацию по ключу.
Справочная информация о ключах (если вы не знали): ключи, используемые ssh, называются асимметричными ключами. Существует "открытый ключ" и "закрытый ключ", и они генерируются как пара (они математически связаны). Все, что зашифровано с помощью открытого ключа, может быть расшифровано только с помощью личного ключа, и наоборот. ssh использует их для аутентификации: вы предоставляете серверу открытый ключ, а своему клиенту - соответствующий закрытый ключ. Когда вы пытаетесь войти в систему, сервер в основном берет некоторые случайные данные, шифрует их с помощью открытого ключа и отправляет их клиенту. Клиент расшифровывает с помощью закрытого ключа и отправляет исходные случайные данные обратно на сервер. Затем сервер знает, что вы тот человек, о котором вы говорите (потому что ваш клиент смог успешно расшифровать).
@stochastic Основной причиной этого является проблема с несовпадением ssh-ключей.
У меня была такая же проблема, и я не смог ввести ssh-ключ в профиль gitlab и позволить приложению сделать все остальное.
ssh-keygen -t rsa -C "здесь YourEmailUsedInGitlab"
Затем выполните шаг и просто вставьте его в свой профиль.
Важно: когда вы генерируете ключ за один сеанс на вашем компьютере. И в том же самом стремлении использовать это (мерзавец клон...) это потерпит неудачу. Повторно войдите в свою систему, и она будет работать.
Сделайте мне одолжение и поправьте мой английский:)