Wie kann ich bei der Verwendung von Git einen Fehler verweigert (öffentlicher) Fehler abgelehnt?

StackOverflow https://stackoverflow.com/questions/2643502

  •  27-09-2019
  •  | 
  •  

Frage

Ich bin auf Mac Snow Leopard und habe gerade installiert git.

Ich habe es versucht

git clone git@thechaw.com:cakebook.git

Aber das gibt mir diesen Fehler:

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

Was vermisse ich?
Ich habe auch versucht zu tun ssh-keygen ohne Passphase, aber immer noch der gleiche Fehler.

War es hilfreich?

Lösung

Der Benutzer hat zuvor noch kein SSH -Public/Private -Taste -Paar generiert?

Diese Informationen funktionieren auf Thechaw, können jedoch auf alle anderen Git -Repositories angewendet werden, die SSH -Pubkey -Authentifizierungen unterstützen. (Sehen Gitolit, Gitlab oder Github zum Beispiel.)

Beginnen Sie zunächst, indem Sie Ihr eigenes öffentliches/privates Schlüsselpaar -Set einrichten. Dies kann entweder DSA oder RSA verwenden, sodass jeder Schlüssel, den Sie einrichten, funktionieren. Auf den meisten Systemen können Sie SSH-Keygen verwenden.

  • Zuerst möchten Sie in Ihr .SH -Verzeichnis CD. Öffnen Sie das Terminal und laufen Sie:

    cd ~/.ssh && ssh-keygen

  • Als nächstes müssen Sie dies in Ihre Zwischenablage kopieren.
    • Auf OS X Run: cat id_rsa.pub | pbcopy
    • Auf Linux Run: cat id_rsa.pub | xclip
    • Unter Windows (über Cygwin/Git Bash) laufen: cat id_rsa.pub | clip
  • Fügen Sie Ihren Schlüssel über die Website zu Ihrem Konto hinzu.
  • Richten Sie endlich Ihre .gitconfig ein.
    • git config --global user.name "bob"
    • git config --global user.email bob@...(Vergessen Sie nicht, Ihre Befehlszeile neu zu starten, um sicherzustellen, dass die Konfiguration neu geladen wird.)

Das ist es, dass Sie gut zu klonen und zu überprüfen sollten.

Weitere Informationen finden Sie auf https://help.github.com/articles/generating-ssh-keys (Danke an @lee whitney) -

Der Benutzer hat zuvor ein öffentliches/privates Schlüsselpaar von SSH generiert?

  • Überprüfen Sie, welcher Schlüssel in Ihren Github- oder GitLab -Kontoeinstellungen autorisiert wurde
  • Gibt an, welcher entsprechende private Schlüssel von Ihrem lokalen Computer zugeordnet werden muss

eval $(ssh-agent -s)

Sagen Sie, wo sich die Schlüssel befinden

ssh-add ~/.ssh/id_rsa

Andere Tipps

Eine umfassendere Fehlerbehebung und sogar automatisierte Fixierung kann durchgeführt werden mit:

ssh -vT git@github.com

Quelle: https://help.github.com/articles/error-permission-denied-publickey/

Dieser Fehler kann auftreten, wenn Sie auf die SSH-URL zugreifen (lesen/schriftlich) anstelle von Git-Lese-URL, aber Sie haben keinen Schreibzugriff auf dieses Repo.

Manchmal möchten Sie nur Ihr eigenes Repo klonen, z. B. auf einem Server bereitgestellt. In diesem Fall benötigen Sie tatsächlich nur schreibgeschützte Zugriff. Aber da das ist dein eigenes Repo, GitHub kann SSH -URL anzeigen, wenn Sie dies bevorzugen. In dieser Situation wird Ihr Zugang verweigert, wenn der öffentliche Schlüssel Ihres Remote -Hosts nicht in Ihren Github SSH -Tasten liegt. Das wird erwartet, dass er passieren wird.

Ein gleichwertiger Fall ist, wenn Sie versuchen, das Repo eines anderen zu klonen, zu dem Sie keinen Schreibzugriff mit SSH -URL haben.

In einem Wort, Wenn Ihre Absicht ist, nur ein Repo zu klonen, verwenden Sie die HTTPS-URL (https://github.com/{user_name}/{project_name}.git) anstelle von SSH -URL (git@github.com:{user_name}/{project_name}.git), was (unnötige) öffentliche Schlüsselvalidierung vermeidet.


UPDATE: GitHub zeigt HTTPS als Standardprotokoll jetzt an und dieser Schritt kann wahrscheinlich den möglichen Missbrauch von SSH -URLs verringern.

Die Github -Hilfe Verknüpfung half mir, dieses Problem zu lösen. Es sieht so aus, als ob der SSH-Schlüssel nicht zum SSH-Agent hinzugefügt wurde. Das habe ich am Ende gemacht.

Befehl 1:

Stellen Sie sicher, dass SSH-Agent aktiviert ist. Der Befehl startet den SSH-Agent im Hintergrund:

eval "$(ssh-agent -s)"

Befehl 2:

Fügen Sie Ihren SSH-Schlüssel zum SSH-Agent hinzu:

ssh-add ~/.ssh/id_rsa

Das funktioniert für mich:

ssh-add ~/.ssh/id_rsa

Habe den gleichen Fehlerbericht.

Fixiert mit der Verwendung von HTTP stattdessen. Da ich nicht "SSH Keys" für einen Test -PC einstellen möchte.

Ändern Sie die URL in HTTP, wenn Klon:

git clone https://github.com/USERNAME/REPOSITORY.git

Mein Problem ist ein bisschen anders: Ich habe URL gesetzt, wenn ich ein vorhandenes lokales Repo zu Remote hinzufügt, indem ich:

git remote add origin ssh://github.com/USERNAME/REPOSITORY.git

Um es zu beheben, setzen Sie die URL auf http zurück:

git remote set-url origin https://github.com/USERNAME/REPOSITORY.git

Übrigens können Sie Ihre URL mit dem Befehl überprüfen:

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

Hoffe das wird jemandem wie mir helfen. :D

Beachten Sie das (zumindest für einige Projekte) Sie müssen ein Github -Konto mit einem SSH -Schlüssel haben.

Sehen Sie sich die in Ihrem Authentifizierungsagenten aufgeführten Schlüssel an (ssh -add -l)
(Wenn Sie keine sehen, fügen Sie einen Ihrer vorhandenen Schlüssel mit SSH-ADD/Pfad/zu/Ihrem/Taste hinzu (z. B.: ssh-add ~/.ssh/id_rsa))
(Wenn Sie keine Schlüssel haben, erstellen Sie zuerst einen. Siehe: http://rcsg-gsir.imsb-sdgi.nrc-cnrc.gc.ca/documents/internet/node31.html oder einfach Google SSH-Keygen)

Um zu überprüfen, ob Sie einen Schlüssel mit Ihrem Github -Konto zugeordnet sind:

Gehe zu: https://github.com/setings/sssh

Sie sollten mindestens einen Schlüssel mit einem Hash -Schlüssel sehen, der einem der Hashes entspricht, den Sie beim Eingeben gesehen haben ssh -add -l erst vor einer Minute.

Wenn Sie dies nicht tun, fügen Sie einen hinzu und versuchen Sie es erneut.

Ich hatte eine leicht andere Situation, ich war an einem Remote -Server angemeldet und verwendete Git auf dem Server. Als ich einen Git -Befehl ausführte, bekam ich dieselbe Nachricht

   Permission denied (publickey).
   fatal: The remote end hung up unexpectedly

Die Art und Weise, wie ich es behoben habe, wurde durch Ändern der Datei /etc /ssh_config auf meinem Mac geändert. aus

ForwardAgent no 

zu

ForwardAgent yes

Ich hatte mit dem gleichen Problem zu kämpfen, was ich getan habe und konnte das Repo klonen. Ich folgte diesem Verfahren für iMac.

Erster Schritt: Überprüfen Sie, ob wir bereits den öffentlichen SSH -Schlüssel haben.

  1. Offenes Terminal.
  2. Eintreten ls -al ~/.ssh Um festzustellen, ob vorhandene SSH -Tasten vorhanden sind:

Überprüfen Sie die Verzeichnisauflistung, um festzustellen, ob Sie bereits über eine öffentliche SSH -Key.default Public sind.

Wenn Sie nicht finden, fahren Sie mit Schritt 2 fort, andernfalls folgen Sie Schritt 3

Schritt 2: Generieren von öffentlichem SSH -Schlüssel

  1. Offenes Terminal.
  2. Geben Sie Followong -Befehl mit Ihrer gültigen E -Mail -Adresse ein, die Sie für GitHub verwenden ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  3. Sie werden im Terminal folgen sehen Generating public/private rsa key pair. Wenn es dazu aufgefordert wird"Enter a file in which to save the key," Drücken Sie Enter. Dies akzeptiert den Standarddateispeicherort. Wenn es dazu aufgefordert wird Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter] Drücken Sie einfach erneut die Eingabetaste. Geben Sie bei der Eingabeaufforderung eine sichere Passphrase ein.
  4. Enter passphrase (empty for no passphrase): [Type a passphrase] Drücken Sie die Eingabetaste, wenn Sie nicht möchten Enter same passphrase again: [Type passphrase again] Drücken Sie erneut die Eingabetaste

Dies wird erzeugen id_rsa.pub

Schritt 3: Hinzufügen Ihrer SSH-Taste zum SSH-Agent

  1. Zwischenminaltyp eval "$(ssh-agent -s)"
  2. Fügen Sie Ihren SSH-Schlüssel zum SSH-Agent hinzu. Wenn Sie einen vorhandenen SSH -Schlüssel verwenden, anstatt einen neuen SSH -Schlüssel zu generieren, müssen Sie ID_RSA im Befehl durch den Namen Ihrer vorhandenen privaten Schlüsseldatei ersetzen. Geben Sie diesen Befehl ein $ ssh-add -K ~/.ssh/id_rsa

Kopieren Sie nun den SSH -Schlüssel und fügen Sie ihn auch Ihrem Github -Konto hinzu

  1. Geben Sie in Terminal diesen Befehl mit Ihrem SSH -Dateinamen ein pbcopy < ~/.ssh/id_rsa.pub Dadurch wird die Datei in Ihre Zwischenablage kopiert. Öffnen Sie jetzt Ihr Github -Konto. Einstellungen> SSH- und GPG -Tasten> Neue SSH -Taste Geben Sie den Titel ein und fügen Sie die Taste aus der Zwischenablage ein und speichern Sie ihn. Voila du bist fertig.

Ich traf das gleiche Problem, weil ich den Unterschied zwischen dem Unterschied zwischen Ssh und Https ist

https://github.com/USERNAME/REPOSITORY.git

ssh://github.com/USERNAME/REPOSITORY.git

Also habe ich mich von geändert Https zu Ssh Nur durch Veränderung https:// zu ssh:// Nichts am Ende der URL wurde geändert.

Aber die Wahrheit ist:

https://github.com/USERNAME/REPOSITORY.git

git@github.com:USERNAME/REPOSITORY.git

Was bedeutet, dass ich mich geändert habe ssh://github.com/USERNAME/REPOSITORY.git zu git@github.com:USERNAME/REPOSITORY.git Es klappt.

Dummer Fehler, aber die Hoffnung hilft jemandem!

Die grundlegenden Git -Anweisungen haben keinen Bezug auf das SSH -Schlüsselmaterial bezogen. Nach einigen der oben genannten Links fand ich eine Git-Hilfeseite, auf der schrittweise die dies für verschiedene Betriebssysteme zu tun hat (der Link erkennt Ihr Betriebssystem und Ihre Umleitung entsprechend):

http://help.github.com/setup-git-redirect/

Es geht durch alles, was für GitHub benötigt wird, und gibt auch detaillierte Erklärungen wie "Warum eine Passphrase hinzufügen, wenn sie einen RSA -Schlüssel erstellen". Ich dachte, ich würde es posten, falls es jemand anderem hilft ...

Stellen Sie unter Windows sicher, dass alle Ihre Apps auf Zuhause zustimmen. MSYs werden es überraschenderweise nicht für Sie tun. Ich musste eine Umgebungsvariable festlegen, weil SSH und Git nicht zustimmen konnten, wo mein .SH -Verzeichnis war.

Bist du in einem Unternehmensumfeld? Ist es möglich, dass sich Ihre Systemvariablen in letzter Zeit geändert haben? Pro Dies Also antworte, SSH -Schlüssel leben bei %HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa.pub. Also wenn %HOMEDRIVE% Vor kurzem weiß Git nicht, wo er nach Ihrem Schlüssel suchen soll, und damit alle Authentifizierungsmaterial.

Versuchen Sie zu rennen ssh -vT git@github.com. Beachten Sie, wo die identity file befindet sich. Für mich zeigte das nicht Zu meinem Normalen \Users\MyLogin sondern auf ein Netzwerklaufwerk, weil sich die Umgebungsvariablen auf Netzwerkebene verändert haben.

Die Lösung? Seit meinem neuen %HOMEDRIVE% Hat die gleichen Berechtigungen wie meine lokalen Dateien, ich habe gerade meinen .SH -Ordner dorthin verschoben und habe ihn einen Tag angerufen.

Leute, so hat es für mich funktioniert:

1- Öffnen Sie Terminal und gehen Sie zum Benutzer [siehe Anhangsbild

2- Öffnen Sie .SH-Ordner und stellen Sie sicher

3 -Git --version [Überprüfen Sie die GIT -Installation und -version

4- GIT-Konfiguration-Global User.Email "Ihre E-Mail-ID"

5- GIT-Konfiguration-GloBal User.name "Ihr Name"

6- GIT-Konfiguration-List [Stellen Sie sicher, dass Sie Ihren Namen und Ihre E-Mail festgelegt haben.

7- CD ~/.Ssh

8-ssh-Keygen fordert zum Speichern von Dateien ein

9- CAT ~/.SSH/ID_RSA.PUB [Greifen Sie auf Ihren öffentlichen Schlüssel zu und kopieren Sie den Schlüssel zu Gerrit-Einstellungen

Notiz: Sie sollten den Sudo -Befehl nicht mit Git verwenden. Wenn Sie einen sehr guten Grund haben, müssen Sie Sudo verwenden, stellen Sie sicher, dass Sie ihn mit jedem Befehl verwenden (es ist wahrscheinlich einfach besser, SU zu verwenden, um an diesem Punkt eine Shell als Wurzel zu erhalten). Wenn Sie SSH -Tasten ohne Sudo generieren und dann versuchen, einen Befehl wie Sudo Git Push zu verwenden, verwenden Sie nicht dieselben Tasten, die Sie generiert haben

enter image description here

enter image description here

Einer der einfachsten Weg

Gehen Sie zum Terminal-

  git push <Git Remote path> --all

Zusätzlich zu Rufinus 'Antwort kopiert die Abkürzung, Ihre SSH -Taste in die Zwischenablage zu kopieren Fenster ist:

  • type id_rsa.pub | clip

Refs:

Wenn Sie mehr als einen Schlüssel haben, müssen Sie möglicherweise dies tunssh-add private-keyfile

Ich habe dieses Problem gerade erlebt, während ich mein aktuelles Projekt festgelegt habe, und keine der oben genannten Lösung funktioniert. Also habe ich versucht zu suchen, was wirklich auf der Debug -Liste mit dem Befehl ssh -vt git@github.com passiert. Ich stelle fest, dass mein privater Key -Dateiname nicht auf der Liste steht. Wenn Sie also den privaten Key -Dateinamen in 'id_rsa' umbenennen, machen Sie den Job. Hoffe das könnte helfen.

Es ist ziemlich einfach. Geben Sie den folgenden Befehl ein

ssh-keygen -t rsa -b 4096 -C "youremailid@yourdomain.com"

Generieren Sie den SSH -Schlüssel. Öffnen Sie die Datei und kopieren Sie den Inhalt. Gehen Sie zur GitHub -Einstellungsseite und klicken Sie auf SSH -Taste. Klicken Sie auf neue SSH -Taste und fügen Sie den Inhalt hier ein. Das war's :) Du solltest das Problem nicht wieder sehen.

Ich habe diesen Fehler getroffen, weil ich meinen gegenwärtigen Arbeitsverzeichnis -Berechtigungen 700 geben musste:

chmod -R 700 /home/ec2-user/

Ich bekam einen ähnlichen Erlaubnis verweigert (PublicKey) Fehler Beim Versuch, ein Makefile zu betreiben.

Als Alternative zu den obigen SSH -Schritten können Sie den nativen GitHub für die Mac -Anwendung installieren.

Klicken Laden Sie GitHub für Mac herunter aus - https://help.github.com/articles/set-up-git#platform-mac

Sobald Sie das Setup mit Ihrem Git Hub -Konto abgeschlossen haben (ich habe auch die Befehlszeilen -Tools von Git Hub installiert, aber nicht sicher, ob dieser Schritt erforderlich ist oder nicht), habe ich eine E -Mail erhalten -

Github] In Ihrem Konto wurde ein neuer öffentlicher Schlüssel hinzugefügt

Und mein Fehler wurde behoben.

Ich bekam den gleichen Fehler. Mein Problem war das Mischen von Sudo.

Ich konnte das Verzeichnis nicht erstellen, das ich automatisch einklonte, ohne den Befehl git clone mit sudo zu präfixen. Als ich das tat, wurden meine SSH -Schlüssel jedoch nicht richtig verwiesen.

Um es zu beheben, setze ich Berechtigungen über Chmod auf dem übergeordneten Verzeichnis, den ich meinen Klon enthalten wollte, damit ich darauf schreiben konnte. Dann lief ich Git -Klon ohne Sudo -Präfix. Es hat dann funktioniert! Danach habe ich die Berechtigungen zurückgeändert. Fertig.

Ich habe diesen Fehler erhalten, weil ich die SSH -Tasten mit der falschen E -Mail generiert habe. Ich konnte mit SSH eine Verbindung herstellen, aber nicht mit Git verwendet. Die Lösung bestand darin, die Schlüssel mithilfe der Haupt -E -Mail -Adresse meines Github -Kontos zu regenerieren.

Es hat für mich funktioniert.

Ihr öffentlicher Schlüssel wird in der Datei id_rsa.pub gespeichert und ist der Schlüssel, den Sie in Ihr Konto hochladen. Sie können diese Schlüssel in der Zwischenablage speichern, indem Sie dies ausführen:

pbcopy <~/.sssh/id_rsa.pub

  • Kopieren Sie die SSH -Taste in die Zwischenablage und kehren Sie zum Webportal zurück.
  • Fügen Sie im Feld SSH -Schlüssel Ihre SSH -Taste ein.
  • Geben Sie im Feld Name einen Namen für den Schlüssel an.
  • sparen .

Es hat für mich funktioniert

ssh -i [your id_rsa path] -T github@github.com

Die einfachste Lösung dafür, wenn Sie versuchen, mit einem anderen Benutzernamen auf ein Repository zu drücken, ist:

 git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git

Dieser seltsame Fehler war in meinem Fall ein Symptom von gnome-keyring-daemon Falsch benennen Sie den Schlüssel, für den ein Passwort erforderlich ist.

Ich folge den hier beschriebenen Schritten und habe das Passwort über das Terminal eingegeben. Der Fehler, auch bekannt als die verwirrende GUI -Schnittstelle, wurde behoben. Sehen: https://askubuntu.com/questions/3045/how-to-disable-nome-keying

In meinem Fall habe ich Ubuntu neu installiert und der Benutzername wird von früheren geändert. In diesem Fall unterscheidet sich der generierte SSH -Schlüssel auch von der vorherigen.

Das Problem, das durch Kopieren Sie einfach den aktuellen SSH -öffentlichen Schlüssel im Repository, gelöst. Der Schlüssel wird in Ihrem Benutzer verfügbar sein /home/.ssh/id_rsa.pub

In meinem Mac habe ich das mit: gelöst:

cp ~/.ssh/github_rsa ~/.ssh/id_rsa

Aus irgendeinem Grund hielt mein Git an, den privaten Schlüssel in der zu finden github_rsa Datei. Dies geschah in einem bestimmten Repo. Ich meine, in anderen Repositories funktionierte Git immer wieder normal.

Ich denke, es ist ein Fehler.

Ich konnte dieses Verhalten lief finden ssh -vT git@github.com

Verwenden Sie den SSH -Link von GitHub, stellen Sie jedoch sicher, dass Sie ihn nicht mit SSH anhängen. Verwenden Sie nur das, was Ihnen die SSH -Registerkarte auf Git Hub gibt, um Ihr Repo zu klonen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top