Получение разрешения отклонено (открытый ключ) на gitlab
Моя проблема в том, что я не могу нажать или извлечь из GitLab. Тем не менее, я могу клонировать (через HTTP или через SSH). Я получаю эту ошибку при попытке нажать:
Отказано в доступе (publickey) фатально: не удалось прочитать из удаленного репозитория
Из всех тем, которые я посмотрел, вот что я сделал:
- Установите ключ SSH на моем компьютере и добавьте открытый ключ в GitLab
- Выполнено конфигурирование --global для имени пользователя и электронной почты
- Клонируется через SSH и HTTP, чтобы проверить, решит ли это проблему
- Выполнено командой ssh -T [email protected]
Если у вас есть какие-либо идеи о том, как решить мою проблему, это будет с благодарностью.
Ответы
Ответ 1
Я нашел это после обыска. Это будет отлично для меня.
- Перейдите в "Git Bash", как и cmd. Щелкните правой кнопкой мыши и "Запуск от имени администратора".
- Тип
ssh-keygen
- Нажмите enter.
- Он попросит вас сохранить ключ в конкретном каталоге.
- Нажмите enter. Он предложит вам ввести пароль или ввести без пароля.
- Открытый ключ будет создан в конкретном каталоге.
- Теперь перейдите в каталог и откройте папку
.ssh
.
- Вы увидите файл
id_rsa.pub
. Откройте его в блокноте. Скопируйте весь текст из него.
- Перейдите к https://gitlab.com/profile/keys.
- Вставить здесь в текстовое поле "ключ".
- Теперь нажмите "Название" ниже. Он автоматически заполнится.
- Затем нажмите "Добавить ключ".
Теперь дайте ему шанс, и это сработает наверняка.
Ответ 2
Шаг 1:
Добавлен файл конфигурации в папку ~/.ssh/, которая выглядит как
User git
Hostname gitlab.com
IdentityFile ~/.ssh/id_rsa_gitlab
TCPKeepAlive yes
IdentitiesOnly yes
Шаг 2: просто клонируйте репозиторий git БЕЗ sudo.
Ответ 3
Я думаю, что простое решение состоит в том, чтобы добавить закрытый ключ к агенту аутентификации (если ваш ключ не ~/.ssh/id_rsa
),
ssh-add ~/.ssh/<your private key>
Вы в основном позволяете ssh-agent
позаботиться об этом.
Кроме того, вы можете добавить его навсегда.
Ответ 4
убедитесь, что вы не используете sudo git clone [email protected]:project/somethiing.git
, иначе ssh будет выглядеть в /root/.ssh
вместо загруженного вами ключа ~/.ssh/id_rsa
Ответ 5
В моем случае это не сработало в WSL (Подсистема Windows для Linux).
Когда я начинаю WSL, я должен
- запустить ssh-agent_
eval $(ssh-agent -s)
- добавьте ключ в ssh-agent:
ssh-add ~/.ssh/id_rsa
- при появлении запроса введите пароль
Теперь связь работает.
Мы можем проверить это с помощью ssh -T [email protected]
примечания:
Ответ 6
В моем случае это была не проблема gitlab, а конфигурация sshd. Сервер ssh не разрешал соединение, кроме списка пользователей. Пользователь git, который подключался удаленно к gitlab, не был в этом списке. Итак, проверьте это прежде всего.
Вы можете проверить конфигурацию вашего ssh-сервера в /etc/ssh/sshd_config
. Если у вас есть строка с опцией AllowUsers
, добавьте к ней git:
AllowUsers user1 user2 user3 git
Ответ 7
если вы используете Linux или macox, попробуйте это в терминале:
ssh-add -l
если ничего не возвращается, попробуйте следующее:
ssh-add
он должен создать личность в ~/.ssh/id_rsa
после повторной попытки:
ssh-add -l
он должен вернуть вашу личность, поэтому после повторной попытки клонирования он должен работать
NB: не забудьте добавить свой ключ ssh в свой профиль gitlab
Спасибо
Ответ 8
У меня была та же проблема, я решил ее, добавив новый ключ ssh:
-
ssh-keygen -t ed25519 -C "[email protected]"
- Скопируйте ваш открытый SSH-ключ в буфер обмена (
xclip -sel clip < ~/.ssh/id_ed25519.pub
в моем случае в Linux) - На gitlab зайдите в
settings=>ssh
keys и пропустите новый ключ
Ответ 9
У меня есть gitlab, работающий с докером, это то, что я сделал, чтобы исправить мою проблему.
Обнаружено, что внутри docker /var/log/gitlab/sshd/current было несколько вхождений сообщения:
Отказано в аутентификации: плохое владение или режимы для файла /var/opt/gitlab/.ssh/authorized_keys
После чего я изменил право собственности на этот файл с 99: пользователи на git: пользователи с помощью:
chown git: users authorized_keys
Ответ 10
Шаги, которые нужно сделать, получили ту же ошибку, но я исправил ее. Gitlab хочет ssh-rsa, поэтому ниже приведен код для запуска ssh для rsa
-
ssh-keygen -o -T rsa -b 4096 -C "[email protected]"
[email protected] - это адрес электронной почты вашей учетной записи на gitlab
-
Он предложит вам ввести, поэтому просто нажмите Enter после того, как приведенный ниже код подсказывает,
Введите файл для сохранения ключа (/home/yourDesktopName/.ssh/id_rsa):
-
Он снова предложит вам ввести, поэтому просто нажмите Enter после того, как приведенный ниже код подсказывает,
Введите фразу-пароль (пусто, без пароля):
-
Он снова предложит ввести вас последним, поэтому просто нажмите Enter после того, как приведенный ниже код подсказывает,
Введите ту же фразу еще раз:
-
Вы покажете свою генерацию ssh-rsa.
-
Войдите в свою учетную запись Gitlab и перейдите на правую панель навигации, вы получите настройки, а на левой боковой панели вы получите ключ ssh. Войдите в это.
-
Посмотрите над подсказкой, в которой вас просят ввести, вы получите путь ssh-rsa.
-
Перейдите в папку SSH и получите id_rsa.pub.
-
Откройте его и получите ключ и скопируйте его в Gitlab, и вы почти закончили.
-
Проверьте: ssh -T [email protected]
-
Вы получите: Welcome to GitLab, @joy4!
-
Готово.
Ответ 11
Если у вас есть несколько учетных записей GIT, и вы хотите другой ключ SSH
Вы должны выполнить тот же шаг для генерации ключа SSH, но убедитесь, что вы
ssh-keygen -t ed25519 -C "[email protected]"
Введите путь, который вы хотите сохранить (например: my-pc/Desktop/.ssh/ed25519)
Добавьте открытый ключ к вашему gitlab (Как добавить ключ ssh в gitlab)
Вы должны новый ssh идентификатор, используя команду ниже
ssh-add ~/my-pc/Desktop/.ssh/ed25519
Ответ 12
Две вещи в основном
-
У вас должны быть ключи id_rsa.pub и id_rsa (приватные) в вашей папке .ssh (которая должна быть в вашей домашней папке. Создайте ее, если ее там нет, и вставьте свои ключи). Это не сработало бы, если бы вы назвали свои ключевые файлы по-другому
-
Измените разрешение id_rsa как chmod 400 ~/.ssh/id_rsa
Ответ 13
Подойдите к терминалу и снова сгенерируйте ключ ssh. Наберите ssh-keygen
. Он спросит вас, где вы хотите сохранить его, введите путь.
Затем скопируйте открытый ключ на платформу gitlabs. Обычно начинается с ssh-rsa.
Ответ 14
Я нашел решение в помощи gitlab.
To create a new SSH key pair:
1. Open a terminal on Linux or macOS, or Git Bash / WSL on Windows.
2. Generate a new ED25519 SSH key pair: ssh-keygen -t ed25519 -C "[email protected]"
2.1 Or, if you want to use RSA: ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
3. Next, you will be prompted to input a file path to save your SSH key pair to... use the suggested path by pressing Enter
4. Once the path is decided, you will be prompted to input a password to secure your new SSH key pair. It a best practice to use a password, but it not required and you can skip creating it by pressing Enter twice.
5. Copy your public SSH key to the clipboard by using one of the commands below depending on your Operating System:
macOS: pbcopy < ~/.ssh/id_ed25519.pub
WSL / GNU/Linux (requires the xclip package): xclip -sel clip < ~/.ssh/id_ed25519.pub
Git Bash on Windows: cat ~/.ssh/id_ed25519.pub | clip
6. Navigating to SSH Keys and pasting your public key in the Key field
7. Click the Add key button
Я надеюсь, что это может помочь некоторым из вас!
Ответ 15
Другая проблема, которая может вызвать это поведение, - это когда у вас есть установка с 2 возможными% HOME% -locations.
Я использую ПК, где некоторые из моих документов хранятся локально, а некоторые хранятся на сетевом диске. Некоторые приложения считают, что C:\Users\<MyUserName>\
- это мой %home%
, другие считают, что U:\
- это домашний.
Оказывается, ssh-keygen
поместил мой закрытый ключ в C:\users\<MyUserName>\
, и что ssh -T
и ssh -v
также смотрят туда.
Таким образом, все работает нормально, за исключением того, что git clone
, git push
и другие ищут ключ в U:\
. Что не получается, поэтому я получаю вышеупомянутую ошибку.
Мне потребовался час, чтобы выяснить это, но в итоге решение было простым: я скопировал все с C:\Users\<MyUserName>\.ssh
в U:\.ssh
Ответ 16
Как добавить ключ SSH в учетную запись gitlab в Ubuntu?
- Откройте терминал в каталоге вашего проекта.
- Введите 'ssh-keygen -o -t rsa -b 4096 -C "ваш электронный адрес gitlab" и нажмите Enter
- Введите 'vim/home/mnbtech/.ssh/id_rsa.pub и нажмите клавишу ввода (или вручную откройте свой id_rsa.pub из того места, где вы его сохранили)
-
SSH ключ появится. Скопируйте те и
-
Зайдите в свой аккаунт на gitlab.
- Нажмите на изображение профиля и нажмите настройки
- В левой части выберите SSH-ключи
- Затем вставьте эти ключи Нажмите кнопку Добавить ключ
SSH-ключ будет добавлен!
(Обратите внимание, что если у вас есть Генерировать предварительный просмотр SSH-ключа и Получение разрешения запрещено (открытый ключ). Вы удаляете ssh-ключ для предварительного просмотра и генерируете новый и добавляете git user.name и email на свой терминал)
Ответ 17
Раньше это было очень трудно для меня, но когда я попробовал, стало так легко добавить ключ ssh в Mac и Linux. Есть несколько шагов и команда, чтобы сделать это следующим образом:
- Откройте терминал вашей системы и перейдите в каталог проекта с помощью команды:
cd 'project directory name'
Запустите команду ssh-keygen
в этом терминале и вводите ее, пока там не появится изображение ключа randomart.
Затем введите еще одну команду в этом терминале:
cat ~/.ssh/id_rsa.pub
Он сгенерирует ваш ключ ssh. Ключ начинается с ssh-rsa
и заканчивается на .local
.
- Скопируйте ключ и перейдите в раздел профиля Gitlab, затем раздел
ssh key
и вставьте его туда. Нажмите на кнопку Add
, это сработает.
Ответ 18
Я решил, как это..
Сгенерировал ключ для Windows с помощью этой команды:
ssh-keygen -t rsa -C "[email protected]" -b 4096
но проблема заключалась в том, что после выполнения этой команды она выдавала строку: "Введите файл, в котором нужно сохранить ключ (/c/Users/xxx/.ssh/id_rsa):" Здесь я давал только имя файла, из-за которого мой ключ был сохранен в моем pwd, а не в указанном месте. Когда я делал "git clone", он предполагал, что ключ находится в папке "/c/Users/xxx/.ssh/id_rsa", но он не был найден, поэтому он выдавал ошибку.
Во время генерации ключа было сгенерировано 2 файла, например "file1" и "file1.pub". Я переименовал оба этих файла в
file1 -> id_rsa
а также
file1.pub -> id_rsa.pub
и поместил оба в "/c/Users/xxx/.ssh/"
Ответ 19
Я добавил свой ~/.ssh/id_rsa.pub
в список известных ключей SSH в настройках GitLab https://gitlab.com/profile/keys. Это решило проблему для меня. :-)
Ответ 20
Я использую Ubuntu 18.04, и это была проблема с правами доступа на моей локальной машине. Проблема исчезла, когда я установил разрешение на чтение/запись для своей папки .git.
Ответ 21
Ну, у меня была такая же проблема, и после попытки ответа @Khan предложил. Однако я смог заставить его работать, просто изменив исходный URL в файле .git/config на адрес https: https://gitlab.com/mygitlabusername/mygitproject.git
Поскольку доступ через ssh запрещен, я понял, что использование https не должно быть проблемой. Тем не менее, он будет запрашивать ваше имя пользователя и пароль для каждого нажатия на репозиторий в
Ответ 22
Проблема для меня заключалась в том, что я переключил UsePAM
с yes
на no
в файле конфигурации SSH в /etc/ssh/sshd_config
. С UsePAM yes
все работает отлично.
Ответ 23
Пожалуйста, используйте git config credential.helper store
если ваш сайт использует TLS/SSL. Надеюсь, это работает
Ответ 24
Кажется, существуют различия между двумя способами доступа к репозиторию git, то есть с использованием SSH или HTTPS. Для меня я столкнулся с ошибкой, потому что я пытался протолкнуть свой локальный репозиторий, используя SSH.
Эту проблему можно просто решить, нажав кнопку клонирования на целевой странице вашего проекта и скопировав ссылку HTTPS и заменив ее ссылкой SSH, отображаемой в формате "git @gitlab...".
Ответ 25
Существует очень простое решение:
вместо работы с ssh - перейдите на https.
сделать это:
в папке вашего проекта у вас есть папка .git
там - у вас есть файл конфигурации - откройте его в текстовом редакторе
и измените строку
url [email protected]:yourname/yourproject.git
в
url = https://gitlab.com/yourname/yourproject.git
Ответ 26
Изменить разрешение :: chmod 400 ~/.ssh/id_rsa
Это помогло мне.