Моя проблема в том, что я не могу отправлять или получать данные из GitLab. Однако я могу клонировать (через HTTP или SSH). Я получаю эту ошибку, когда пытаюсь нажать:
Permission denied (publickey) fatal: Не удалось прочитать из удаленного репозитория
Из всех тем, которые я просмотрел, вот что я сделал:
- Настроить SSH-ключ на моем компьютере и добавить открытый ключ в GitLab
- Сделал конфиг --global для имени пользователя и электронной почты
- Клонировано через SSH и HTTP, чтобы проверить, решит ли это проблему
- Выполнена команда ssh -T git@gitlab.com
Если у вас есть представление о том, как решить мою проблему, мы будем очень признательны.
ssh -vvvv git@gitlab.com
посмотреть, подберет ли он SSH-ключsudo git clone git@gitlab.com:project/somethiing.git
, иначе ssh будет искать/root/.ssh
вместо загруженного вами ключа~/.ssh/id_rsa
Ответы:
Я нашел это после долгих поисков. Для меня это сработает отлично.
ssh-keygen
.ssh
папку.id_rsa.pub
. Откройте его в блокноте. Скопируйте из него весь текст.Теперь попробуйте, и он наверняка сработает.
источник
type %userprofile%\.ssh\id_rsa.pub | clip
ssh-add filename
(with-path, если не в каталоге rsa) после выполнения вышеуказанных шаговШаг 1: Добавлен файл конфигурации в
~/.ssh/config
файл, который выглядит какШаг 2: Просто клонируйте репозиторий git БЕЗ sudo.
Документация: https://gitlab.com/help/ssh/README#working-with-non-default-ssh-key-pair-paths
источник
id_rsa_gitlab
в примере с Fedo, вам нужно будет предоставить файл конфигурации. Хорошая статья Gitlab по этому поводу: gitlab.com/help/ssh/…Hostname
на,Host
чтобы это работало,Я думаю, что простое решение - добавить закрытый ключ к агенту аутентификации (если вашего ключа нет
~/.ssh/id_rsa
),Вы в основном позволяете
ssh-agent
заботиться об этом.Кроме того, вы можете добавить его навсегда .
источник
.pub
расширения.В моем случае это не работало в WSL (подсистема Windows для Linux).
Когда я начинаю WSL, я должен
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Теперь связь работает.
Мы можем проверить это с помощью
ssh -T git@github.com
ноты:
источник
убедитесь, что вы не работаете
sudo git clone git@gitlab.com:project/somethiing.git
, иначе ssh будет искать/root/.ssh
вместо ключа, который вы загрузили~/.ssh/id_rsa
источник
Есть очень простое решение: вместо работы с ssh перейти на https. для этого: в папке вашего проекта у вас есть папка .git - у вас есть файл конфигурации - откройте его в текстовом редакторе и измените строку
в
источник
если вы используете Linux или macox, просто попробуйте это в терминале:
если он ничего не возвращает, попробуйте следующее:
он должен создать личность в ~ / .ssh / id_rsa
после повторной попытки:
он должен вернуть вашу личность, поэтому после повторной попытки клонирования он должен работать
NB: не забудьте добавить свой ssh-ключ в свой профиль gitlab
Спасибо
источник
В моем случае это была проблема не с gitlab, а с конфигурацией sshd. Сервер ssh не разрешал подключение, кроме списка пользователей. Пользователь git, удаленно подключающийся к gitlab, не был в этом списке. Итак, проверьте это прежде всего.
Вы можете проверить конфигурацию своего ssh-сервера в
/etc/ssh/sshd_config
. Если у вас есть строка с опциейAllowUsers
, добавьте к ней git:источник
У меня gitlab работает с докером, это то, что я сделал, чтобы исправить свою проблему.
Обнаружено, что внутри docker / var / log / gitlab / sshd / current было несколько случаев сообщения:
После этого я сменил владельца этого файла с 99: users на git: users с:
источник
Действия, которые необходимо выполнить, возникла такая же ошибка, но я исправил ее. Gitlab хочет ssh-rsa, поэтому ниже приведен код для запуска ssh для rsa
ssh-keygen -o -t rsa -b 4096 -C "name@gmail.com"
name@gmail.com - это адрес электронной почты вашей учетной записи gitlab
Вам будет предложено войти, поэтому просто нажмите Enter после того, как появится следующий код,
Введите файл, в котором нужно сохранить ключ (/home/yourDesktopName/.ssh/id_rsa):
Он снова предложит вам войти, поэтому просто нажмите Enter после того, как появится следующий код,
Введите кодовую фразу (пусто, если кодовая фраза отсутствует):
Он снова запросит последний ввод, поэтому просто нажмите Enter после того, как появится следующий код,
Введите ту же парольную фразу еще раз:
Вы покажете свой ssh-rsa generate.
Войдите в свою учетную запись Gitlab и перейдите на правую панель навигации, где вы получите настройки, а на левой боковой панели вы получите ключ ssh. Войдите в него.
Посмотрите над подсказкой с просьбой войти, вы получите путь ssh-rsa.
Перейдите в свою папку SSH и получите id_rsa.pub
Откройте его, получите ключ и скопируйте и вставьте в Gitlab, и все почти готово.
Проверить по:
ssh -T git@gitlab.com
Ты получишь:
Welcome to GitLab, @joy4!
Готово.
источник
Раньше для меня это было очень сложно, но когда я попробовал, стало так легко добавить ключ ssh в Mac и Linux. Для этого есть несколько шагов и команд:
Запустите команду
ssh-keygen
в этом терминале и вводите ее, пока там не появится случайное изображение ключа.Затем введите еще одну команду в этом терминале:
Он сгенерирует ваш ssh-ключ. Ключ будет начинаться с
ssh-rsa
и заканчиваться на.local
.ssh key
раздел и вставьте его туда. Нажмите наAdd
кнопку, это сработает.источник
У меня была такая же проблема, я решил ее, добавив новый ключ ssh:
ssh-keygen -t ed25519 -C "email@example.com"
xclip -sel clip < ~/.ssh/id_ed25519.pub
в моем случае в Linux)settings=>ssh
клавишам и пропустите новый ключисточник
Введите путь, который вы хотите сохранить (например: my-pc / Desktop / .ssh / ed25519)
Добавьте открытый ключ в свой gitlab ( как добавить ключ ssh в gitlab )
источник
В основном две вещи
У вас должны быть ключи id_rsa.pub и id_rsa (закрытые) в вашей папке .ssh (которая должна быть в вашей домашней папке. Создайте ее, если ее там нет, поместите свои ключи). Это не сработает, если вы по-другому назвали свои ключевые файлы
Измените разрешение id_rsa на chmod 400 ~ / .ssh / id_rsa
источник
Другая проблема, которая может вызвать такое поведение, - это когда у вас есть установка с двумя возможными% HOME%-местоположениями.
Я использую компьютер, на котором некоторые из моих документов хранятся локально, а некоторые из них хранятся на сетевом диске. Некоторые приложения думают, что
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
источник
Решил вот так ..
Сгенерировал ключ для Windows с помощью этой команды:
но проблема заключалась в том, что после запуска этой команды выскакивала строка: «Введите файл, в котором нужно сохранить ключ (/c/Users/xxx/.ssh/id_rsa):» Здесь я давал только имя файла, из-за которого мой ключ сохранялся в моем pwd, а не в указанном месте. Когда я делал «git clone», предполагалось, что ключ находится в местоположении «/c/Users/xxx/.ssh/id_rsa», но он не был найден, следовательно, он выдавал ошибку.
Во время генерации ключа были сгенерированы 2 файла: «file1» и «file1.pub». Я переименовал оба этих файла как
и
и разместил оба в месте
"/c/Users/xxx/.ssh/"
источник
Зайдите в терминал и заново создайте ключ ssh. Тип
ssh-keygen
. Он спросит вас, где вы хотите его сохранить, введите путь.Затем скопируйте открытый ключ на платформу gitlabs. Обычно он начинается с ssh-rsa.
источник
Проблема для меня заключалась в том, что я переключился
UsePAM
сyes
наno
в конфигурационный файл SSH под/etc/ssh/sshd_config
. СоUsePAM yes
всем работает отлично.источник
Я нашел решение в справке gitlab .
Надеюсь, это поможет некоторым из вас!
источник
Как добавить SSH-ключ в учетную запись gitlab в ubuntu?
Появится ключ SSH. Скопируйте те и
Перейдите в свою учетную запись gitlab.
SSH-ключ будет добавлен!
(NB, если у вас есть SSH-ключ для генерации превью и отказано в получении разрешения (открытый ключ). Вы удаляете ключ SSH для превью, генерируете новый и добавляете git user.name и адрес электронной почты в свой терминал)
источник
Я решил
git@gitlab.com: Permission denied (publickey)
проблему с помощью следующих инструкцийcat ~/.ssh/id_rsa.pub
id_rsa.pub
(открытый ключ) в ваш getlab `Setting -> SSH Keyscat ~/.ssh/id_rsa
id_rsa
(закрытый ключ) в `Code_repo-> git_auth-> id_rsaПРИМЕЧАНИЕ. Позаботьтесь о пользователе компьютера, если вы используете
root
пользователя в своем DockerFile или где-либо еще, а затем используйтеsudo su
перед запуском вышеуказанных команд для получения открытых и закрытых ключей пользователя root.источник
В нашем случае проблема возникла не на стороне пользователя / клиента, а на стороне сервера Gitlab.
Мы запускаем локальный экземпляр Gitlab CE 12.9 на CentOS 7.1.
Мы обнаружили, что на сервере файл .ssh / authorized_keys не обновляется должным образом. Пользователи создают свои ключи SSH (следуя руководству Gitlab) и добавляют их на сервер Gitlab, но сервер не обновляет authorized_keys , поэтому это всегда будет приводить к ошибкам отказа в разрешении.
Обходной путь состоял в том, чтобы перестроить файл authorized_keys , запустив:
Это сработает для всех, кто добавил свои ключи перед запуском задачи rake. Для следующих пользователей, которые добавят свои ключи, кто-то должен снова вручную запустить задачи с граблями.
Более постоянным решением было не использовать файл authorized_keys и использовать вместо этого индексированный поиск в базе данных Gitlab :
По умолчанию (по умолчанию в нашей установке) файл Write to authorized_keys был отмечен в Admin Area> Performance Optimization settings. Поэтому мы сняли этот флажок и вместо этого использовали базу данных Gitlab.
После настройки индексированного поиска и снятия флажка « Запись в файл authorized_keys» доступ по SSH стал нормальным.
источник
Для тех, кто использует Windows 10 и у него ничего не работает:
В моем случае мне пришлось клонировать репо с https вместо ssh, и появилось окно с запросом моих учетных данных. После этого все работает нормально.
источник
Я знаю, я отвечаю на это очень поздно, и даже StackOverflow подтвердил, действительно ли я хочу ответить. Я отвечаю, потому что никто на самом деле не описал реальную проблему, поэтому хотел поделиться тем же.
Основы
Во-первых, поймите, что это за пульт. Remote - это GitLab, и ваша система является локальной, поэтому, когда мы говорим об удаленном
origin
, любой URL-адрес, установленный в вашемgit remote -v
выводе, является вашим удаленным URL-адресом.Протоколы
По сути, Git clone / push / pull работает в основном с двумя разными протоколами (есть и другие) -
Когда вы клонируете репо (или меняете удаленный URL-адрес) и используете URL-адрес HTTP, например https://gitlab.com/wizpanda/backend-app.git HTTP, тогда он использует первый протокол, то есть протокол HTTP.
Если вы клонируете репо (или меняете удаленный URL-адрес) и используете URL-адрес, как
git@gitlab.com:wizpanda/backend-app.git
тогда, он использует протокол SSH.Протокол HTTP
В этом протоколе каждая удаленная операция, то есть клонирование, push & pull, использует простую аутентификацию, то есть имя пользователя и пароль вашего пульта (в данном случае GitLab), что означает, что для каждой операции вы должны вводить свое имя пользователя и пароль, что может быть громоздким ,
Поэтому, когда вы нажимаете / вытягиваете / клонируете, GitLab / GitHub аутентифицирует вас с вашим именем пользователя и паролем и позволяет вам выполнять операцию.
Если вы хотите попробовать это, вы можете переключиться на URL-адрес HTTP, выполнив команду
git remote set-url origin <http-git-url>
.Чтобы избежать этого, вы можете использовать протокол SSH.
SSH протокол
Простое соединение SSH работает с парами открытого и закрытого ключей. Итак, в вашем случае GitLab не может аутентифицировать вас, потому что вы используете URL-адрес SSH для связи. Теперь GitLab должен знать вас каким-то образом. Для этого вам нужно создать пару открытого и закрытого ключей и передать открытый ключ GitLab.
Теперь, когда вы нажимаете / вытягиваете / клонируете с помощью GitLab, GIT (SSH внутренне) по умолчанию предлагает ваш закрытый ключ GitLab и подтверждает вашу личность, а затем GitLab позволит вам выполнить операцию.
Поэтому я не буду повторять шаги, которые уже даны Мухаммедом, я повторю их теоретически.
~/.ssh
имяid_rsa.pub
(открытый ключ) иid_rsa
(закрытый ключ).подсказки
Всегда следует создавать надежный ключ rsa длиной не менее 2048 байтов. Так что команда может быть
ssh-keygen -t rsa -b 2048
.https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
Общая мысль
У обоих подходов есть свои плюсы и минусы. После того, как я набрал приведенный выше текст, я пошел искать больше об этом, потому что я никогда ничего об этом не читал.
Я нашел этот официальный документ https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols, который рассказывает об этом больше. Я хочу сказать, что, прочитав ошибку и подумав об ошибке, вы можете составить свою собственную теорию или понимание, а затем сопоставить с некоторыми результатами Google, чтобы исправить проблему :)
источник
Я добавил свой
~/.ssh/id_rsa.pub
в список известных ключей SSH в настройках GitLab https://gitlab.com/profile/keys . Это решило проблему для меня. :-)источник
Я использую ubuntu 18.04, и на самом деле это была проблема с разрешением на моем локальном компьютере. Проблема исчезла, когда я установил разрешение на чтение / запись для моей папки .git.
источник
Ну, у меня была такая же проблема, и после попытки ответа @Khan предложил. Однако мне удалось заставить его работать, просто изменив исходный URL-адрес в файле .git / config на адрес https: https://gitlab.com/mygitlabusername/mygitproject.git
Поскольку доступ через ssh запрещен, я понял, что использование https не должно быть проблемой. Однако он будет запрашивать ваше имя пользователя и пароль для каждого нажатия на репозиторий at.
источник
Пожалуйста, используйте,
git config credential.helper store
если ваш сайт использует TLS / SSL. Надеюсь, это сработаетисточник
Кажется, есть различия между двумя способами доступа к репозиторию git, то есть с использованием SSH или HTTPS. Что касается меня, я столкнулся с ошибкой, потому что пытался запустить свой локальный репозиторий с помощью SSH.
Проблему можно просто решить, нажав кнопку клонирования на целевой странице вашего проекта, скопировав ссылку HTTPS и заменив ее на ссылку SSH в формате «git @ gitlab ...».
источник
Изменить разрешение :: chmod 400 ~ / .ssh / id_rsa Мне помогло.
источник