Git: У дозволі відмовлено (publickey) фатально - Не вдалося прочитати з віддаленого сховища. під час клонування сховища Git


153

Я не можу клонувати репозиторій Git і отримую цю помилку:

krishna.soni@KRISHNACHANDRAS /c/Projects $ git clone http://stage.abc.com:10088/pqr
http://<url>/<repository> Cloning into '<repository>'... fatal: could not read Username for 'http://<url>': No such file or directory

Я читав Bitbucket, Windows і "fatal: не міг прочитати пароль для" , але все-таки є проблема.

Я пішов далі, але зараз отримую цю помилку

sh.exe": chown: command not found

krishna.soni@KRISHNACHANDRAS /c
$ git clone ssh://krishna.sonipayu.in@stage.payupaisa.
/projects
Cloning into 'C:/projects'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

> krishna.soni@KRISHNACHANDRAS /c
>     $ git clone ssh:<url>
>     ts
>     Cloning into 'C:/projects'...
>     Permission denied (publickey).
>     fatal: Could not read from remote repository.

Please make sure you have the correct access rights

і сховище існує.


Ви впевнені, що це сховище git?
gravtii

Так . Я новачок в git, отримуючи цю помилку під час клонування. Я додав електронну пошту та ім’я у глобальний файл конфігурації за допомогою команд git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com
KCS

Основна причина полягає в тому, що репо не може розпізнати вас як користувача git-сервера. Чи можете ви отримати доступ до сервера через ssh?
Малу Скрылевъ

Якщо у когось виникає ця проблема під час використання Github, виконайте вказані тут кроки: help.github.com/en/articles/… Це працювало на мене.
Рунак

Відповіді:


69

Це схоже на проблему дозволів - не випуск Windows 7.

Ваш ключ ssh не авторизований - Permission denied (publickey) .

Потрібно створити відкритий ключ ssh і попросити адміністратора сховища Git додати його ssh відкритий ключ

Інформація про те, як це зробити: Збереження ключа ssh не вдається


27
Це дивно. Сховище є загальнодоступним, і я клоную публічне сховище. Я не впевнений, чому я повинен просити адміністратора дозволу на клонування свого публічного сховища, розміщеного в Github.
Шейлен

5
Так, помилково, вам не потрібно нічого просити адміністратора, це проблема з локальним git.
Іван Кастельянос

3
Чому це важко? Мені це вдалося, але це не було безболісно.
Ніклас Р.

9
Вам не потрібно авторизувати ключ для публічних репостів, просто скористайтеся протоколом HTTPS: stackoverflow.com/a/33072867/1385678
Дієго V

225

Для людей, які приїжджають сюди, які просто намагаються отримати сховище, але їх не хвилює протокол (ssh / https), ви можете просто використовувати https замість ssh (якщо він підтримується).

Так, наприклад, ви використовуєте

git clone https://github.com/%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

замість

git clone git@github.com:%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

6
Це найбільш підходящий резервний план, якщо дозволи ssh не вирішені або ви хочете пропустити цю частину.
Вахіб Уль Хак

13
Ця відповідь змінила механізм з sshна https. Він не вирішує початкову проблему, використовуючи ssh для доступу до сховища. Цікаво, як це може продовжувати отримувати перевагу як гарну відповідь на питання. Інші відповіді, наведені нижче, вирішують це належним чином.
Армін

3
Оригінальна проблема - новачок, який намагається клонувати репо. Якщо мета - зняти публічне репо, це найшвидша ефективна відповідь.
Вівек Чавда

Дякую, що врятував мене від самогубства. До речі, це може бути використане для приватного репо, якщо у вас є ім’я користувача та пароль.
ВИПУСК ВАГНЕР

81

Якщо навколо створення SSH і додавання його у вашому обліковому записі Bitbucket або де завгодно виникає проблема навколо доступу, вам потрібно зробити наступне в терміналі на GitBash, OSX або Linux:

# Lists already added identities (‘ssh keys’)
ssh-add -l

Потім, якщо ваш ключ не відображається в списку, додайте його таким чином (замініть identityйого справжнім іменем):

# Add a new identity
ssh-add ~/.ssh/identity

Це працювало для мене.


3
ssh-add ~/.ssh/identityпомилка повернення/Users/lee/.ssh/identity: No such file or directory
лій

14
Запуск "ssh-add" з "~ / .ssh" (і введення парольної фрази для мого файлу "~ / .ssh / id_rsa" при появі запиту) вирішив проблему для мене.
Джеймс Фурей

1
Мені вдалося витягнути репо, але не натискати, не роблячи цього, ура!
Димитър Несторов

Відповідь @james Furey допомогла мені sourcetree визначити ssh url як git repo.
Вболівальник YSR

2
працював на мене ... після годинної пітливості та спроб різних речей. Єдина річ, а не тотожність, врешті-решт, використовуйте ім’я у власній системі. Перейдіть до папки .ssh, виконавши команду cd у терміналі, а потім введіть команду 'ls' у терміналі. А потім повторіть команду "особистість" зверху за допомогою власного файлу. Перейдіть до терміналу sourcetree і: cd ~потім cd .sshтоді ls(скопіюйте ім’я без розширення .pub), потім (запустіть цю команду)ssh-add ~/.ssh/(copied name)
Tejas

21

Я зіткнувся з тією ж проблемою і з GitHub . Ось як це вирішити!

  1. Створіть ключ SSH на своєму комп’ютері, як описано тут: Створення ключів SSH .
  2. Увійдіть у свій акаунт GitHub : GitHub Login .
  3. У свій обліковий запис додайте новостворений ключ SSH: Ключі SSH для мого облікового запису .
  4. Спробуйте ще раз до git cloneпроекту.

Працював як шарм !!
Прахар

1
Зараз я використовував цю відповідь у трьох нових операційних системах за останні 5 років, і вона працювала ідеально кожен раз.
kotoole

Мабуть, висока Sierra вимагає, щоб користувач зареєстрував ключ у .ssh / config-файлі. Ель-Капітан якось обходився без цього.
dsomnus

14

У мене виникла ця проблема на Mac - під час правильного налаштування SSH для доступу до мого сховища Git, після перезапуску (і деякий час Mac працював у режимі очікування) усі мої облікові дані були видалені. Мабуть, чомусь паб-ключ був встановлений на 644, що призвело до його видалення з брелка. Щоб прочитати:

  • chmod 600 відкритий ключ
  • ssh-add ~/.ssh/[your private key]- це повинно відображати, що особистість була додана. Ключовий файл, який ви хочете, - це файл без розширення .pub.
  • ssh-add -l повинен показати вам щойно додану особу

редагувати: мабуть, MacOS має тенденцію до видалення ключів - після завантаження оновлення High Sierra (але я його ще не встановив) мій ключ був видалений, і мені довелося його знову додати через ssh-add


2
Це рішення все ще є точним після оновлення macOS High Sierra до версії 10.13.1. Зокрема, Sourcetree - це додаток, який вирішив проблему, коли я намагався підштовхнути комісію до віддаленого сховища. Наведені вище кроки вирішили проблему для мене.
Пол Бонневіль

У мене виникло це питання 10.13.4, і це рішення працювало на мене.
Ендрю Еблінг

11

Я також зіткнувся з тим же питанням. Я зробив наступне, і це спрацювало на мене:

  1. Створіть ключі від клієнта GIT GUI у Windows. Скопіюйте цей ключ у буфер обміну.
  2. Відкрийте свій рахунок на bitBucket/ веб-сайті git і додайте цей ключ до свого профілю. Таким чином, сервер знає, що ви є законним користувачем, який має доступ із законної системи.
  3. Це воно. Усі команди push натискали для мене відтепер.

Це допомогло мені побачити, що я створив свій RSA, не запускаючи Git Bash як адміністратора, який помістив мій ключ RSA на диск "h": oops:
tylerlindell

7

Для мене, коли я хотів клонуватись із мого сховища, у мене було те саме повідомлення, яке було помічено перед "Файлом заборонено (publickey) фатально: Не вдалося прочитати з віддаленого сховища". Рішення для мого випадку - не використовувати судо перед клонуванням. Це все.


Велике спасибі @mustapha, ти дійсно економиш мій час.
vinay kumar

7

Github (або Bitbucket) не може знайти ваш ключ ssh на їх сервері.

Просто додайте ключ у налаштуваннях свого облікового запису.


6

Якщо ви генеруєте новий відкритий ключ ssh і вставляєте його в bitbucket або github і

це не допомогло - спробуйте перезавантажити комп'ютер . Це мені допомогло !!


Дякую, саме це і мені потрібно було зробити.
Стефа

Мені довелося закрити термінал і відкрити новий, щоб побачити його роботу.
rahul

5

Потрібно створити новий ключ ssh, запустивши ssh-keygen -t rsa.


Посилання @Joel Heroku видалено. Дякую
biniam

4

Я отримав помилку ...

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

... коли я намагався зв’язатись із підказкою Git Bash до Bitbucket після того, як мій ноутбук помер від поганого оновлення Windows 10 і повернувся до заводських налаштувань. Я відновив усі свої файли ssh із резервної копії.

Причиною помилки виявилося невідповідність імені мого облікового запису Windows після відновлення комп'ютера. Я дізнався, що файл відкритого ключа id_rsa.pubзакінчується легко читабельним рядком, що містить ім'я мого облікового запису Windows, а за ним -@ а потім знак, а потім ім'я комп'ютера.

Коли я первісно налаштував свій комп’ютер, я створив ім’я свого облікового запису Windows, включаючи середню початкову, але коли комп'ютер було скинуто до заводських налаштувань, наш новий хлопець DevOps створив моє ім’я акаунта без мого середнього початкового.

Щоб вирішити проблему, я просто відредагував свій файл відкритого ключа id_rsa.pubта видалив середню початкову частину свого імені наприкінці. Я застряг з тим же ім'ям комп’ютера, щоб було добре. Я скопіював вміст файлу в буфер обміну Windows. Потім я ввійшов у Bitbucket, перейшов до налаштувань Bitbucket під своїм аватаром і додав новий відкритий ключ, куди я вставив новий вміст.

Повернувшись до підказки Git Bash, я підтвердив, що зараз він працює, ввівши команду ...

ssh -T git@bitbucket.org

... і я повернув повідомлення, що я ввійшов.


4

У macOS / Linux (Ubuntu):

1. Для автентифікації вам потрібно додати публічну частину вашої пари ключів SSH до бітбукета в межах налаштувань користувача: Налаштування користувача -> SSH-ключі

Зазвичай ви знайдете цю загальнодоступну частину у каталозі ~ / .ssh id_rsa.pub. відзначте .pubчастину імені файлу для Public. це допоможе вам створити його, якщо у вас його ще немає

Ви ще не закінчили ...

2. Вам потрібно повідомити вашій системі, який ключ використовувати для віддаленого хоста, тому додайте ці рядки до файлу ~ / .ssh / config

Host bitbucket.org
 IdentityFile ~/.ssh/PRIVATE_KEY_FILE_NAME

Звідки PRIVATE_KEY_FILE_NAMEім’я приватної частини вашої пари ключів SSH, якщо ви не поспішали з нею, зазвичай її за замовчуванням: id_rsa в цьому випадку замініть PRIVATE_KEY_FILE_NAMEвище на id_rsa(приватний ключ НЕ має .pubрозширення)


Зауважте, ви неправильно написали "Ubuntu" - редагування повинно бути не менше 6 символів, тому я не можу запропонувати редагувати :)
Міша Наследов

4

Корисна нитка, і я не приношу багато нового на стіл. Крок, який я зробив, також є частиною опису, який Максим корисно вказує, але деякі можуть його не помітити. Розділ - Додавання вашого SSH ключа до ssh-агента .

Я вже створив свій ssh-ключ, але після перезавантаження я не зміг клонувати жодне з моїх власних сховищ.

Мені довелося запустити ssh-агент і додати до цього агента приватний ключ, щоб клонувати.

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

3

Я зіткнувся з тією ж проблемою під час виконання git cloneкоманди з командного рядка Windows. Але команда успішно виконується від Git Bash .


3

У мене було подібне питання. Я змінив ssh клавіші, перезапустив і спробував усі інші 'n' рішення. Але актуальною проблемою для мене був наш протокол за замовчуванням gitlab, змінений з ssh на https.

перевірити віддалену URL-адресу

git remote -v

змінити віддалений URL

git remote set-url origin https://URL

Це ідеально, нам не потрібно налаштовувати ssh.
Рохіт

Я повинен був зробити те саме. Ключ ssh не працював для мене в цьому випадку
Дані

фатально: не вдається отримати доступ до ' bitbucket.org:xxxxxx/xxxxxxxxt ': номер порту закінчився на 'r'
nosequeweaponer

2

Якщо все не вдалося, як це було у мене, Видаліть GIT, перевстановіть. Чомусь це виправляється.

PS

  1. Я спробував створити нові ключі та оновити на відкритих ключах SSH
  2. Також спробував видалити всі ключі і спробував створити новий ключ.
  3. І НІ, нічого поганого з моєю .gitconfig

2

виправити hubінструмент для кліпу:

  • git config --global hub.protocol https на тривалий термін
  • git remote add OOPS https://github.com/isomorphisms/go.git&& git push OOPSдля негайного виправлення

Ця помилка виникає в hubінструменті командного рядка через їх неправильне значення hub.protocolgit-config за замовчуванням . Вони встановлюють репост

git://github.com/schacon/ticgit.git

замість того, що насправді приймає github, а саме https://github.com/schacon/ticgit.git.


Читання LESS=+/"HTTPS instead" man hubпояснить, звідки походить вищевказана команда "довгострокове виправлення".


Це врятувало мені день!
Джей Лі

1

Під час клонування у мене виникла аналогічна проблема [моя ПОМИЛКА: В дозволі відмовлено (publickey). fatal: Не вдалося прочитати з віддаленого сховища. Переконайтеся, що у вас є правильні права доступу .. тощо]

- У моєму випадку я використовував bitBucket / UBUNTU14.04, але ВЖЕ був набір ключових файлів, які я раніше генерував І я змінив назву файлів. Я просто копіював файли у стандартний формат імен id_rsa & id_rsa.pub. Потім я повторно запустив команду з випуску.

OBTW : Я також міг би використати підказку пароля, використовуючи клон стилю HTTP.


0

У мене була схожа проблема на Linux. Я вирішив проблему, увійшовши на сервер github і створивши ключ розгортання. Це в налаштуваннях для сховища. Потім я скопіював і вставив свій відкритий ключ (який зазвичай знаходиться у ~ / .ssh / id_rsa.pub, але ваша конфігурація може бути іншою). Існує прапорець, щоб надати цьому ключу доступ для запису. Клацніть по ньому (якщо ви не використовуєте лише git для розгортання; у такому випадку не натискайте на нього).


0

У мене була така ж помилка. Моє рішення полягало в тому, щоб вийти з системи та увійти знову, оскільки мій ssh-агент не синхронізувався з віддаленим ключем ssh.

Додайте сюди про всяк випадок, якщо хтось побачив, що інші відповіді, схоже, не стосуються їхньої ситуації.


0

Під час налаштування ssh для gitlab я зіткнувся з тією ж проблемою. У мене вже є ssh, githubі я не міг цього перезаписати. Кроки, які працювали для мене:

  1. Створіть SSH за допомогою нового шляху та додайте його до списку ssh ssh-add /path/to/new/id_rsa.
  2. Створіть файл, названий configу ~/.ssh/користуванні. Я звик vi ~/.ssh/config/.
  3. Додайте це до новоствореного файлу

# GitLab.com server Host gitlab.com RSAAuthentication yes IdentityFile /path/to/new/id_rsa

  1. Збережіть і закрийте.

Після цього перезапустіть термінал і спробуйте натиснути, він повинен працювати


0

Якщо ви хочете клонувати проекти з відкритим кодом, надішліть запит на отримання:

Я хотів клонувати проект з відкритим кодом, щоб я міг подати декілька запитів на тягу. Проблема полягала в тому, що у мене не було дозволів від власника проекту. Незалежно від того, оскільки мій намір полягав у тому, щоб подати PR, ось така життєздатна альтернатива:

Моє рішення:

  1. Форк-сховище

Вила Repo

  1. Потім клонуйте з вашого роздрібного сховища. Клон з роздвоєного Репо

  2. Попрацюйте над своїми функціями та подайте запит на тягу.



0

рішення: На сервері, який ви намагаєтесь клонувати або натиснути з cat ~ / .ssh / id_rsa.pub Перейдіть до GitHub, налаштувань, SSH та GPG-ключів , нового вставки ключа SSH .


0

Я бачу, що це повідомлення про помилки має безліч різних причин. У мене була така ж помилка при спробі встановити локально інший сховище поряд з одним, який вже повністю працює з ssh і т.д. Ніяких відповідей тут знайти не вдалося, але я зрозумів це. Тож я його розміщую. Сподіваємось, хтось допомагає.

git remote add origin git@git.ourserver.com:teamalpha/repositorytwo.git

0

якщо жодна з цих відповідей не допомагає і

  1. ви використовуєте Windows
  2. ви генеруєте свій ключ за допомогою Putty або ви встановили на свій ПК Putty
  3. ви генеруєте свій ключ за допомогою CMD або PowerShell

Спробуйте

  1. видаліть ваші ключі
  2. шукайте у Windows для Git Bash, а потім генеруйте новий ключ за допомогою командного рядка Git Bash
  3. додати відкритий ключ до свого Інтернет-репо

Потім ви знайдете після git-клону та введіть так для підтвердження, він повинен почати клонуватись


-2

Це може бути дурним, але з нами трапилося:

Якщо ви використовуєте bitbucket та Sourcetree, а ви просто копіюєте вставте URL-клон до нового діалогового вікна repo, він відображатиме ту саму помилку при потягуванні чи натисканні.

Переконайтеся, що ви видалили матеріал "git clone" перед URL-адресою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.