Wie kann ich bei der Verwendung von Git einen Fehler verweigert (öffentlicher) Fehler abgelehnt?
-
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.
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.
- Offenes Terminal.
- 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
- Offenes Terminal.
- 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"
- 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 wirdEnter 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. Enter passphrase (empty for no passphrase): [Type a passphrase]
Drücken Sie die Eingabetaste, wenn Sie nicht möchtenEnter 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
- Zwischenminaltyp
eval "$(ssh-agent -s)"
- 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
- 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
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.