Git: Berechtigung verweigert (publickey) fatal - Konnte nicht aus dem Remote-Repository lesen. beim Klonen des Git-Repositorys


152

Ich kann kein Git-Repository klonen und erhalte folgende Fehlermeldung:

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

Ich habe Bitbucket, Windows und "fatal: Passwort konnte nicht gelesen werden für" gelesen , habe aber immer noch das Problem.

Ich bin weiter vorgegangen, erhalte aber jetzt diesen Fehler

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

und das Repository existiert.


Bist du sicher, dass es ein Git-Repository ist?
Gravetii

Ja, so ist es . Ich bin neu in Git und bekomme diesen Fehler beim Klonen. Ich habe E-Mail und Namen in die globale Konfigurationsdatei mit den Befehlen git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com
KCS

Der Hauptgrund ist, dass das Repo Sie als Benutzer des Git-Servers nicht erkennen kann. Könnten Sie über ssh auf den Server zugreifen?
Малъ Скрылевъ

Wenn jemand dieses Problem bei der Verwendung von Github hat, befolgen Sie die hier genannten Schritte: help.github.com/de/articles/… Es hat bei mir funktioniert.
Rounak

Antworten:


68

Es sieht aus wie ein Berechtigungsproblem - kein Windows 7-Problem.

Ihr SSH-Schlüssel ist nicht autorisiert - Permission denied (publickey).

Sie müssen einen öffentlichen SSH-Schlüssel erstellen und den Administrator des Git-Repositorys bitten, den sshöffentlichen Schlüssel hinzuzufügen

Informationen dazu: Das Speichern des SSH-Schlüssels schlägt fehl


27
Das ist komisch. Das Repository ist öffentlich und ich klone das öffentliche Repository. Ich bin mir nicht sicher, warum ich den Administrator um Erlaubnis bitten soll, sein auf Github gehostetes öffentliches Repository zu klonen.
Shailen

5
Ja, ist falsch, Sie müssen den Administrator nichts fragen, ist ein Problem mit dem lokalen Git.
Ivan Castellanos

3
Warum ist es schwierig? Es gelang mir, aber es war nicht schmerzlos.
Niklas R.

9
Sie müssen keinen Schlüssel für öffentliche Repos autorisieren. Verwenden Sie einfach das HTTPS-Protokoll: stackoverflow.com/a/33072867/1385678
Diego V

224

Für Leute, die hierher kommen und nur versuchen, das Repository abzurufen, sich aber nicht für das Protokoll interessieren (ssh / https), möchten Sie möglicherweise nur https anstelle von ssh verwenden (sofern dies unterstützt wird).

So verwenden Sie zum Beispiel

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

anstatt

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

6
Dies ist der am besten geeignete Fallback-Plan, wenn SSH-Berechtigungen nicht aufgelöst werden oder Sie diesen Teil überspringen möchten.
Wahib Ul Haq

13
Diese Antwort änderte den Mechanismus von sshauf https. Das ursprüngliche Problem wird nicht durch die Verwendung von ssh für den Zugriff auf das Repository gelöst. Ich frage mich, wie dies als gute Antwort auf die Frage immer wieder positiv bewertet werden kann. Die anderen Antworten unten lösen es richtig.
Armin

3
Das ursprüngliche Problem ist ein Git-Neuling, der versucht, ein Repo zu klonen. Wenn das Ziel darin besteht, ein öffentliches Repo abzubauen, ist dies die schnellste und effektivste Antwort.
Vivek Chavda

Danke, dass du mich vor dem Selbstmord gerettet hast. Im Übrigen kann dies für ein privates Repo verwendet werden, vorausgesetzt, Sie haben den Benutzernamen und das Passwort.
BILL WAGNER

81

Wenn nach dem Erstellen von SSH und dem Hinzufügen in Ihrem Bitbucket-Konto oder wo immer noch Probleme mit dem Zugriff auftreten, müssen Sie im Terminal unter GitBash, OSX oder Linux Folgendes tun:

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

Wenn Ihr Schlüssel dann nicht aufgelistet ist, fügen Sie ihn wie folgt hinzu (ersetzen Sie ihn identity durch seinen richtigen Namen):

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

Das hat bei mir funktioniert.


3
ssh-add ~/.ssh/identityRückgabefehler/Users/lee/.ssh/identity: No such file or directory
Lee

14
Das Ausführen von "ssh-add" von "~ / .ssh" (und das Eingeben der Passphrase für meine "~ / .ssh / id_rsa" -Datei, wenn Sie dazu aufgefordert werden) löste das Problem für mich.
James Furey

1
Ich konnte mein Repo ziehen, aber nicht schieben, ohne dies zu tun, Prost!
Dimitar Nestorov

Die Antwort von @james Furey hat mir geholfen, die SSH-URL als Git-Repo zu identifizieren.
YSR Fan

2
arbeitete für mich ... nach stundenlangem Schwitzen und Ausprobieren. Das Einzige ist, dass Sie anstelle der Identität am Ende den Namen in Ihrem eigenen System verwenden. Wechseln Sie in den Ordner .ssh, indem Sie im Terminal den Befehl cd ausführen, und geben Sie dann im Terminal den Befehl 'ls' ein. Und dann spielen Sie den Befehl "Identität" von oben mit Ihrer eigenen Datei ab. Gehen Sie zum Sourcetree-Terminal und: cd ~dann cd .sshdann ls(kopieren Sie den Namen ohne .pub-Erweiterung) dann (führen Sie diesen Befehl aus)ssh-add ~/.ssh/(copied name)
Tejas

21

Ich hatte das gleiche Problem mit GitHub . Hier erfahren Sie, wie Sie es lösen können!

  1. Generieren Sie einen SSH-Schlüssel auf Ihrem Computer wie hier beschrieben: Generieren von SSH-Schlüsseln .
  2. Loggen Sie sich in Ihr GitHub-Konto ein: GitHub Login .
  3. Fügen Sie in Ihrem Konto den neu generierten SSH-Schlüssel hinzu: Die SSH-Schlüssel meines Kontos .
  4. Versuchen Sie es erneut mit git clonedem Projekt.

Arbeitete wie Charme !!
Prakhar

1
Ich habe diese Antwort jetzt auf 3 neuen Betriebssystemen in den letzten 5 Jahren verwendet und sie hat jedes Mal perfekt funktioniert.
Kotoole

Anscheinend erfordert High Sierra, dass der Benutzer den Schlüssel in der .ssh / config-Datei registriert. El Capitan kam irgendwie ohne aus.
dsomnus

14

Ich hatte dieses Problem auf einem Mac - während ich SSH korrekt einrichtete, um auf mein Git-Repository zuzugreifen, wurden nach dem Neustart (und einige Zeit, in der der Mac in einer Pattsituation war) alle meine Anmeldeinformationen entfernt. Anscheinend wurde der Pub-Schlüssel aus irgendeinem Grund auf 644 gesetzt, was dazu führte, dass er aus dem Schlüsselbund entfernt wurde. Zu lesen:

  • chmod 600 der öffentliche Schlüssel
  • ssh-add ~/.ssh/[your private key]- Dies sollte anzeigen, dass Identität hinzugefügt wurde. Die gewünschte Schlüsseldatei ist die ohne die Erweiterung .pub.
  • ssh-add -l sollte Ihnen neu hinzugefügte Identität zeigen

Bearbeiten: Anscheinend neigt MacOS dazu, Schlüssel zu entfernen. Nach dem Herunterladen des High Sierra-Updates (aber ich habe es noch nicht installiert) wurde mein Schlüssel entfernt und ich musste ihn erneut über hinzufügen ssh-add


2
Diese Lösung ist nach dem Upgrade von macOS High Sierra auf Version 10.13.1 immer noch korrekt. Insbesondere war Sourcetree die App, die das Problem auftauchte, als ich versuchte, ein Commit auf ein Remote-Repository zu übertragen. Die obigen Schritte haben das Problem für mich behoben.
Paul Bonneville

Ich hatte dieses Problem am 10.13.4 und diese Lösung funktionierte für mich.
Andrew Ebling

11

Ich stand auch vor dem gleichen Problem. Ich habe folgendes gemacht und es hat bei mir funktioniert:

  1. Generieren Sie Schlüssel vom GIT-GUI-Client unter Windows. Kopieren Sie diesen Schlüssel in die Zwischenablage.
  2. Eröffnen Sie Ihr Konto auf der bitBucket/Git-Website und fügen Sie diesen Schlüssel Ihrem Profil hinzu. Auf diese Weise weiß der Server, dass Sie ein legitimer Benutzer sind, der von einem legitimen System aus zugreift.
  3. Das ist es. Alle Push-Befehle funktionierten von nun an für mich.

Dies half mir zu sehen, dass ich meinen RSA generiert hatte, ohne Git Bash als Administrator
auszuführen,

7

Als ich aus meinem Repository klonen wollte, wurde mir dieselbe Meldung vor "Berechtigung verweigert (publickey) fatal: Konnte nicht aus Remote-Repository lesen" angezeigt. Die Lösung für meinen Fall ist , Sudo nicht vor dem Klonen zu verwenden. Das war's.


Vielen Dank @mustapha du sparst wirklich meine Zeit.
Vinay Kumar

7

Github (oder Bitbucket) kann Ihren SSH-Schlüssel nicht auf ihrem Server finden.

Fügen Sie einfach Ihren Schlüssel in Ihre Kontoeinstellung ein.


6

Wenn Sie einen neuen öffentlichen SSH-Schlüssel generieren und ihn in Bitbucket oder Github und einfügen

es hat nicht geholfen - bitte versuchen Sie Ihren PC neu zu starten . Es hat mir geholfen!!


Danke, das musste ich auch tun.
Steph

Ich musste das Terminal schließen und ein neues öffnen, damit es funktionierte.
Rahul

5

Sie müssen einen neuen SSH-Schlüssel erstellen, indem Sie ausführen ssh-keygen -t rsa.


@ Joel Heroku Referenz wird entfernt. Danke
biniam

4

Ich habe den Fehler bekommen ...

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

... als ich versuchte, über eine Git Bash-Eingabeaufforderung Kontakt mit Bitbucket aufzunehmen, nachdem mein Laptop an einem schlechten Windows 10-Update gestorben war und auf die Werkseinstellungen zurückgesetzt wurde. Ich hatte alle meine SSH-Dateien aus einem Backup wiederhergestellt.

Die Fehlerursache war eine Nichtübereinstimmung in meinem Windows-Kontonamen nach der Neuerstellung des Computers. Ich habe erfahren, dass die Datei id_rsa.pubmit dem öffentlichen Schlüssel mit einer leicht lesbaren Zeichenfolge endet, die meinen Windows-Kontonamen gefolgt von einem enthält@ Zeichen und dem Computernamen enthält.

Als ich meinen Computer ursprünglich eingerichtet habe, habe ich meinen Windows-Kontonamen einschließlich meiner mittleren Initiale erstellt. Als mein Computer jedoch auf die Werkseinstellungen zurückgesetzt wurde, hat unser neuer DevOps-Typ meinen Kontonamen ohne meine mittlere Initiale erstellt.

Um das Problem zu beheben, habe ich einfach meine öffentliche Schlüsseldatei bearbeitet id_rsa.pubund am Ende die mittlere Initiale in meinem Namen entfernt. Ich hatte mich an denselben Computernamen gehalten, also war das in Ordnung. Ich habe den Dateiinhalt in die Windows-Zwischenablage kopiert. Ich habe mich dann bei Bitbucket angemeldet, bin unter meinem Avatar zu den Bitbucket-Einstellungen gegangen und habe einen neuen öffentlichen Schlüssel hinzugefügt, in den ich die neuen Inhalte eingefügt habe.

Zurück an der Git Bash-Eingabeaufforderung bestätigte ich durch Eingabe des Befehls, dass es jetzt funktioniert ...

ssh -T git@bitbucket.org

... und ich habe eine Nachricht zurückbekommen, dass ich angemeldet war.


4

Unter macOS / Linux (Ubuntu):

1. Um sich zu authentifizieren, müssen Sie Ihren öffentlichen Teil Ihres SSH-Schlüsselpaars über Ihre Benutzereinstellungen zu bitbucket hinzufügen: Benutzereinstellungen -> SSH-Schlüssel

Sie finden den genannten öffentlichen Teil normalerweise in Ihrem ~ / .ssh-Verzeichnis id_rsa.pub. Beachten Sie den .pubTeil des Dateinamens für Public. Es wird Ihnen helfen, eine zu generieren, wenn Sie noch keine haben

Du bist noch nicht fertig ...

2. Sie müssen Ihrem System mitteilen, welcher Schlüssel mit welchem ​​Remote-Host verwendet werden soll. Fügen Sie diese Zeilen daher zu Ihrer Datei ~ / .ssh / config hinzu

Host bitbucket.org
 IdentityFile ~/.ssh/PRIVATE_KEY_FILE_NAME

Wo PRIVATE_KEY_FILE_NAMEist der Name des privaten Teils Ihres SSH-Schlüsselpaars? Wenn Sie nicht damit herumgespielt haben, lautet der Standardname normalerweise: id_rsa In diesem Fall ersetzen Sie PRIVATE_KEY_FILE_NAMEoben durch id_rsa(der private Schlüssel hat KEINE .pubErweiterung).


Beachten Sie, dass Sie "Ubuntu" falsch geschrieben haben - Bearbeitungen müssen mindestens 6 Zeichen lang sein, daher kann ich die Bearbeitung nicht vorschlagen :)
Misha Nasledov

4

Nützlicher Thread und ich bringe nicht viel Neues auf den Tisch. Der Schritt, den ich unternommen habe, ist auch Teil der Beschreibung, auf die Maxime hilfreich hinweist, aber einige übersehen ihn möglicherweise. Der Abschnitt ist Hinzufügen Ihres SSH-Schlüssels zum SSH-Agenten .

Ich hatte meinen SSH-Schlüssel bereits generiert, konnte aber nach einem Neustart keines meiner eigenen Repositorys klonen.

Ich musste den ssh-Agenten starten und diesem Agenten den privaten Schlüssel hinzufügen, um zu klonen.

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

3

Beim Ausführen des git cloneBefehls über die Windows-Befehlszeile trat das gleiche Problem auf . Der Befehl wird jedoch erfolgreich von Git Bash ausgeführt .


3

Ich hatte das ähnliche Problem. Ich ändere die SSH-Schlüssel und starte neu und probiere alle anderen 'n' Lösungen aus. Das eigentliche Problem für mich war jedoch, dass unser Gitlab-Standardprotokoll von ssh auf https geändert wurde.

Überprüfen Sie die Remote-URL mit

git remote -v

Ändern Sie die Remote-URL

git remote set-url origin https://URL

Es ist perfekt. Wir müssen ssh nicht konfigurieren.
Rohit Parte

Ich musste das gleiche tun. Der SSH-Schlüssel funktionierte in diesem Fall nicht für mich
Dani

fatal: Zugriff auf ' bitbucket.org:xxxxxx/xxxxxxxxt ' nicht möglich: Portnummer endete mit 'r'
Nasenqueaponer

2

Wenn alles fehlschlägt, wie bei mir, DIT deinstallieren, neu installieren. Aus irgendeinem Grund wird dies behoben.

PS

  1. Ich habe versucht, neue Schlüssel zu generieren und bei öffentlichen SSH-Schlüsseln zu aktualisieren
  2. Es wurde auch versucht, alle Schlüssel zu löschen und einen neuen Schlüssel zu erstellen.
  3. Und NEIN, nichts falsch mit meiner .gitconfig

2

Fix für hubCLI-Tool:

  • git config --global hub.protocol https langfristig
  • git remote add OOPS https://github.com/isomorphisms/go.git&& git push OOPSzur sofortigen Behebung

Dieser Fehler tritt beim hubBefehlszeilentool aufgrund des falschen Standardwerts für hub.protocolgit-config auf. Sie setzen Repos auf

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

anstelle dessen, was Github tatsächlich akzeptiert, nämlich https://github.com/schacon/ticgit.git.


Durch Lesen LESS=+/"HTTPS instead" man hubwird erklärt, woher der obige Befehl "Langzeitbehebung" stammt.


Das hat mir den Tag gerettet!
Jay Lee

1

Beim Klonen hatte ich ein ähnliches Problem [mein FEHLER: Berechtigung verweigert (publickey). fatal: Konnte nicht aus dem Remote-Repository lesen. Bitte stellen Sie sicher, dass Sie die richtigen Zugriffsrechte haben .. etc]

- Ich habe in meinem Fall bitBucket / UBUNTU14.04 verwendet, aber BEREITS hatte ich eine Reihe von Schlüsseldateien, die ich zuvor generiert und den Namen der Dateien geändert hatte. Ich habe die Dateien einfach in das Standardformat id_rsa & id_rsa.pub kopiert. Ich habe dann den Befehl ohne Problem erneut ausgeführt.

OBTW : Ich hätte auch die Kennwortabfrage mithilfe des HTTP-Klons verwenden können.


0

Ich hatte ein ähnliches Problem unter Linux. Ich habe das Problem gelöst, indem ich mich beim Github-Server angemeldet und einen Bereitstellungsschlüssel erstellt habe. Das ist unter Einstellungen für das Repository. Dann habe ich meinen öffentlichen Schlüssel kopiert und eingefügt (normalerweise in ~ / .ssh / id_rsa.pub, aber Ihre Konfiguration kann anders sein). Es gibt ein Kontrollkästchen, um diesem Schlüssel Schreibzugriff zu gewähren. Klicken Sie darauf (es sei denn, Sie verwenden git nur zur Bereitstellung. Klicken Sie in diesem Fall nicht darauf).


0

Ich hatte den gleichen Fehler. Meine Lösung bestand darin, mich abzumelden und erneut anzumelden, da mein SSH-Agent nicht mehr mit dem Remote-SSH-Schlüssel synchronisiert war.

Fügen Sie dies hier hinzu, nur für den Fall, dass jemand gesehen hat, dass die anderen Antworten nicht auf seine Situation zutreffen.


0

Ich hatte das gleiche Problem, als ich ssh für gitlab einrichtete. Ich habe bereits ssh für githubund ich konnte das nicht überschreiben. Die Schritte, die für mich gearbeitet haben, sind:

  1. Generieren Sie SSH mit neuem Pfad und fügen Sie ihn der SSH-Liste hinzu ssh-add /path/to/new/id_rsa.
  2. Erstellen Sie eine Datei mit dem Namen configin ~/.ssh/Verwendung. Ich habe benutzt vi ~/.ssh/config/.
  3. Fügen Sie dies der neu erstellten Datei hinzu

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

  1. Speichern und Beenden.

Starten Sie danach das Terminal neu und versuchen Sie es zu drücken. Es sollte funktionieren


0

Wenn Sie Open Source-Projekte klonen möchten, um eine Pull-Anfrage zu senden:

Ich wollte ein Open Source-Projekt klonen, damit ich einige Pull-Anfragen einreichen konnte. Das Problem war, dass ich keine Berechtigungen vom Eigentümer des Projekts hatte. Egal, da ich beabsichtigte, eine PR einzureichen, ist hier eine praktikable Alternative:

Meine Lösung:

  1. Fork Repository

Gabel Repo

  1. Dann klonen Sie aus Ihrem gegabelten Repository. Klon von gegabeltem Repo

  2. Arbeiten Sie an Ihren Funktionen und senden Sie dann eine Pull-Anfrage.


0

Sie können versuchen, Ihren SSH-Schlüssel zu Ihrem privaten Schlüsselbund hinzuzufügen. Es hat bei mir funktioniert

ssh-add -K ~/.ssh/[your-private-key]

"unbekannte Option - K"
Jiří Doubravský

0

Lösung: Auf dem Server, den Sie versuchen, auf cat ~ / .ssh / id_rsa.pub zu klonen oder von dort zu pushen, gehen Sie zu GitHub, Einstellungen, SSH- und GPG-Schlüssel , Neuer SSH-Schlüssel zum Einfügen.


0

Ich sehe, dass diese Fehlermeldung viele verschiedene Gründe hat. Ich hatte den gleichen Fehler, als ich versuchte, lokal ein anderes Repository neben einem Repository einzurichten, das bereits vollständig mit ssh usw. funktioniert, und es mit demselben Server, aber einem anderen Repository zu verbinden. Es waren keine Antworten zu finden, aber ich habe es herausgefunden. Also poste ich es. Hoffentlich hilft jemand.

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

0

wenn keine dieser Antworten hilft und

  1. Sie verwenden Windows
  2. Sie generieren Ihren Schlüssel mit Putty oder Sie haben Putty auf Ihrem PC installiert
  3. Sie generieren Ihren Schlüssel mit CMD oder PowerShell

Versuchen

  1. Löschen Sie Ihre Schlüssel
  2. Suchen Sie in Windows nach Git Bash und generieren Sie dann einen neuen Schlüssel mit der Git Bash-Befehlszeile
  3. Fügen Sie Ihrem Online-Repo einen öffentlichen Schlüssel hinzu

Dann finden Sie nach git clone und geben yes ein, um zu bestätigen, dass der Klon beginnen soll


-2

Es mag dumm sein, aber es ist uns passiert:

Wenn Sie Bitbucket und Sourcetree verwenden und einfach die Klon-URL kopieren und in das neue Repo-Dialogfeld einfügen, wird beim Ziehen oder Drücken der gleiche Fehler angezeigt.

Stellen Sie sicher, dass Sie das 'Git-Klon'-Zeug vor der URL löschen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.