Как устранить ошибку Permission denied (publickey) при использовании Git? - PullRequest
531 голосов
/ 15 апреля 2010

Я на Mac Snow Leopard и только что установил git.

Я только что попробовал

git clone git@thechaw.com:cakebook.git

но это дает мне эту ошибку:

Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Чего мне не хватает?
Я также попытался сделать ssh-keygen без пароля, но все еще та же ошибка.

Ответы [ 37 ]

0 голосов
/ 19 декабря 2017

Позвольте мне также поделиться своим опытом,

Я пытался клонировать какой-то проект из репозитория Gerrit, где я получил свои открытые ключи в настройках учетной записи.

При первой попытке сделать git clone я получил следующую ошибку:

Unable to negotiate with XX.XX.XX.XX port XXX: no matching key exchange
method found. Their offer: diffie-hellman-group1-sha1

Я понял, что мне нужно каким-то образом передать опцию SSH -oKexAlgorithms=+diffie-hellman-group1-sha1 на git clone.

Надеемся, GIT_SSH_COMMAND переменная среды выполнила задание:

export GIT_SSH_COMMAND="ssh -oKexAlgorithms=+diffie-hellman-group1-sha1"

Но git clone все еще не начал работать .. Теперь он выдает (по теме):

Permission denied (publickey).

Я уже получил ключи SSH и не хотел их восстанавливать. Я проверил простое SSH-соединение с хостом, и все было в порядке:

****    Welcome to Gerrit Code Review    ****

  Hi XXXXX, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://xxxxx@xx.xx.xx:xxx/REPOSITORY_NAME.git

Я был немного смущен. Я снова начал и включил отладку для SSH через опцию -vvv. И я увидел следующее:

debug1: read_passphrase: can't open /dev/tty: No such device or address

Возможно, это была перегрузка для переменной GIT_SSH_COMMAND env - мой ключ был защищен парольной фразой (и я ввел ее, когда проверял вход в систему на хосте git repo).

Итак, тогда я решил избавиться от фразы. Мне помогла простая команда:

ssh-keygen -p

Затем я ввел свою ключевую фразу для «старой парольной фразы» и просто дважды нажал ENTER на «новом парольном ресурсе», чтобы оставить его пустым, т. Е. Без пароля и подтвердить свой выбор.

После этого я получил только что клонированный репо на своем локальном диске.

0 голосов
/ 07 октября 2017
$ cd ~
$ cd .ssh
$ chmod 400 id_rsa
0 голосов
/ 30 июня 2017

Да, если вы используете git, просто следуйте документации. Theres чертовски много Документации, написанной на этом. Вы не можете пойти не так, если вы будете следовать этому. Просто начните сначала, если вам нужно. Ссылка на сайт : https://help.github.com/articles/connecting-to-github-with-ssh/

0 голосов
/ 28 мая 2017

Шаги для Mac:

  1. Переключение пользователя (sudo su - jenkins)
  2. Создание ключа (ssh-keygen -t rsa -b 4096 -C "username").Имя пользователя - это имя, которое вы используете с jenkins.
  3. Копирование сгенерированного открытого ключа (cat ~ / .ssh / id_rsa.pub).
  4. Вставьте ключ в учетную запись git.(Настройки -> SSH и CPG ключи -> Новые ssh ключи -> Введите имя ключа (может быть любым) и вставьте ключ в описание).
0 голосов
/ 28 ноября 2018

Запустить терминал от имени администратора.

Если терминал не может видеть ваш .ssh, он вернет эту ошибку.

0 голосов
/ 23 марта 2019

Прежде всего, я рекомендую проверить некоторые стандартные вещи, такие как:

  • войдите как правильный пользователь в вашей системе,
  • имеет правильный закрытый ключ в нужном месте в вашей системе,
  • попытайтесь подключиться с правильным именем пользователя , именем хоста и портом ,
  • иметь открытый ключ в нужном месте (и для нужного пользователя) на внешнем сервере,
  • перезапустил службу ssh на вашем компьютере:
service ssh restart

Мне было достаточно.

0 голосов
/ 03 апреля 2017

Мне удалось преодолеть эту проблему, выполнив следующие шаги в моей системе Ubuntu. Пока я экспериментировал с ssh без пароля к системе.

sudo vi / etc / ssh / sshd_config

1) Комментарий ниже: # Измените на no, чтобы отключить пароли в виде открытого текста. #PasswordAuthentication yes PasswordAuthentication нет ----> прокомментировал это.

2) Затем перезапустил демон sshd, как показано ниже.

перезапуск службы sshd

...