Hat jemand diesen Fehler gesehen und weiß, was zu tun ist?
Ich benutze das Terminal, bin im Stammverzeichnis, das GitHub-Repository ist vorhanden und ich weiß nicht, was ich jetzt tun soll.
> git push -u origin master
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Antworten:
GitHub kann Sie nicht authentifizieren. Entweder sind Sie nicht mit einem SSH-Schlüssel eingerichtet, weil Sie keinen auf Ihrem Computer eingerichtet haben , oder Ihr Schlüssel ist nicht mit Ihrem GitHub-Konto verknüpft.
Sie können auch die HTTPS-URL anstelle der SSH / Git-URL verwenden, um zu vermeiden, dass Sie sich mit SSH-Schlüsseln befassen müssen. Dies ist die von GitHub empfohlene Methode .
Außerdem hat GitHub eine Hilfeseite speziell für diese Fehlermeldung und erklärt alles, was Sie überprüfen können.
quelle
ssh -vT [email protected]
der Github-Hilfeseite verwendet, um zu debuggen, welchen Schlüssel Ihr Repo verwendet. Ich schlage vor, Sie fügen es in Ihre Antwort ein.ssh -vT [email protected]
bietet viele Informationen darüber, warum es nicht funktioniert.Haben Sie eine Konfigurationsdatei in Ihrem Verzeichnis ~ / .ssh erstellt? Es sollte Inhalte wie diese haben:
Angenommen, Sie haben einen SSH- Schlüssel mit dem Namen github_rsa erstellt
und auf GitHub hochgeladen ...
HINWEIS: Sie müssen diese Art der expliziten Konfiguration befolgen, wenn Sie mehr als 1 Schlüssel (2 und mehr) in Ihrem ~ / .ssh / -Verzeichnis haben. Wenn Sie den Schlüssel nicht auf diese Weise angeben, wird der erste Schlüssel in der angegebenen Reihenfolge verwendet und für die Github-Authentifizierung verwendet. Dies hängt also vom Namen der Schlüsseldatei ab.
quelle
ssh -T [email protected]
Antworten Sie vor der Verwendung Ihrer Methode korrekt, währendgit push -u origin master
derselbe Fehler wie in der Frage angezeigt wird. Warum kann ich mich korrekt verbinden, aber nicht darauf drücken oder von dort abrufen?Ich kenne dieses Problem. Fügen Sie nach dem Hinzufügen des SSH-Schlüssels auch den SSH-Schlüssel zum SSH-Agenten hinzu (aus den offiziellen Dokumenten https://help.github.com/articles/generating-ssh-keys/ ).
Danach funktioniert alles einwandfrei, Git kann den richtigen Schlüssel anzeigen, bevor er es nicht tut.
quelle
ssh-agent -s
ssh-add ~/.ssh/github_rsa
Sie müssen einen SSH-Schlüssel generieren (falls Sie keinen haben) und den öffentlichen Schlüssel Ihrem Github-Konto zuordnen. Siehe Githubs eigene Dokumentation .
quelle
Das ist mir passiert. Aus irgendeinem Grund wurde meine Herkunft durcheinander gebracht, ohne dass ich es merkte:
Überprüfen Sie, ob Ihre Einstellungen noch korrekt sind
Die URL muss ungefähr so lauten: ssh: //[email protected]/YourDirectory/YourProject.git; Wenn Sie [email protected] nicht sehen, verwenden Sie
um es richtig zu machen. Sie können auch die Github-App verwenden, um die URL des primären Remote-Repositorys im Einstellungsfeld Ihres bestimmten Repositorys zu überprüfen und festzulegen.
quelle
Angenommen, Sie verbinden GitHub über SSH, können Sie den folgenden Befehl ausführen, um dies zu bestätigen.
Wenn Sie ein Ergebnis im folgenden Format erhalten: [email protected]: xxx / xxx.github.com.git, sollten Sie Folgendes tun.
Generieren Sie einen SSH-Schlüssel (oder verwenden Sie einen vorhandenen). Wenn Sie einen hatten, müssen Sie nur Ihren Schlüssel zum ssh-agent (Schritt 2) und zu Ihrem GitHub-Konto (Schritt 3) hinzufügen.
unten sind für diejenigen, die keinen SSH-Schlüssel haben.
Schritt 1 Generieren eines öffentlichen / privaten RSA-Schlüsselpaars.
Sie werden aufgefordert zu bestätigen, wo der SSH-Schlüssel gespeichert werden soll und welche Passphrase Sie verwenden möchten.
Schritt 2 Fügen Sie Ihren Schlüssel zum ssh-agent hinzu
Stellen Sie sicher, dass ssh-agent aktiviert ist
$eval "$(ssh-agent -s)"
Fügen Sie dem SSH-Agenten Ihren SSH-Schlüssel hinzu:
$ssh-add ~/.ssh/id_rsa
Schritt 3 Fügen Sie Ihren SSH-Schlüssel zu Ihrem Konto hinzu
$sudo apt-get install xclip
$xclip -sel clip < ~/.ssh/id_rsa.pub
Fügen Sie dann den kopierten Schlüssel zu GitHub hinzu
Gehen Sie zu Einstellungen -> SSH-Tasten (Seitenleiste Persönliche Einstellungen) -> SSH-Taste hinzufügen -> Formular ausfüllen (Taste befindet sich in Ihrer Zwischenablage, verwenden Sie einfach Strg + V) -> Taste hinzufügen
Nachdem Sie die obigen Schritte ausgeführt haben, sollten Sie das Berechtigungsproblem lösen.
Referenzlink: Generieren von SSH-Schlüsseln .
quelle
cat ~/.ssh/id_rsa.pub
Zuerst müssen wir nach vorhandenen SSH-Schlüsseln auf Ihrem Computer suchen. Öffnen Sie das Terminal und führen Sie Folgendes aus:
und das listet die Dateien in Ihrem .ssh-Verzeichnis auf
Und schließlich je nachdem, was Sie sehen (in meinem Fall war):
Versuchen Sie einfach, Ihren RSA einzurichten, und hoffentlich lösen Sie damit Ihre Probleme mit dem "Git Push Origin"
$ ssh-keygen -lf ~/.ssh/github_rsa.pub
ANMERKUNG: RSA-Zertifikate sind mit Schlüsselpaaren versehen, sodass Sie über ein privates und ein öffentliches Zertifikat verfügen. Auf privat können Sie nicht zugreifen, da es (in diesem Fall) zu github gehört. In diesem Fall fehlt jedoch möglicherweise das öffentliche Zertifikat (Zumindest war das mein Fall, mein Github-Account oder Repo wurde irgendwie durcheinander gebracht und ich musste den zuvor generierten öffentlichen Schlüssel "verknüpfen")
quelle
SHA
Ausgabe von diesem Befehl nach Github kopieren ?Ich habe diesen Fehler erhalten. Es stellte sich heraus, dass ich gerade OSX auf Sierra aktualisiert hatte und mein alter Schlüssel nicht mehr registriert war.
Zuerst dachte ich, es wäre "Ein Upgrade auf macOS Sierra wird Ihre SSH-Schlüssel beschädigen und Sie von Ihren eigenen Servern sperren".
Aber ich hatte diesen umgangen. Es stellte sich heraus, dass ich nur meinen vorhandenen Schlüssel neu registrieren musste:
ssh-add -K
Und geben Sie die Passphrase ein ... fertig!
quelle
Eine andere Lösung :
Erstellen Sie die SSH-Schlüssel, geben Sie ein
ssh-keygen -t rsa -C "[email protected]"
. Dadurch werden sowohl id_rsa- als auch id_rsa.pub-Dateien erstellt.Fügen Sie die ID_RSA zur SSH-Liste auf dem lokalen Computer hinzu:
ssh-add ~/.ssh/id_rsa.
Nach dem Generieren der Schlüssel erhalten Sie den Pubkey mit:
Sie erhalten so etwas wie:
Kopieren Sie diesen Schlüssel (Wert) und gehen Sie zu github.com und fügen Sie unter der Einstellung (ssh- und pgp-Schlüssel) Ihren öffentlichen Schlüssel hinzu.
quelle
Falls Sie nicht auf Ihr eigenes Repository zugreifen oder in ein geklontes Repository klonen (mithilfe einiger "git submodule ..." - Befehle):
Im Home-Verzeichnis Ihres Repositorys:
1. Öffnen Sie ".gitmodules" und Sie werden so etwas finden:
Ändern Sie die letzte Zeile in das HTTPS des Repositorys, das Sie abrufen müssen:
Speichern Sie ".gitmodules" und führen Sie den Befehl für Submodule aus. ".Git" wird aktualisiert.
2. Öffnen Sie ".git", gehen Sie zur "config" -Datei und Sie werden so etwas finden:
Ändern Sie die letzte Zeile in das HTTPS des Repositorys, das Sie abrufen müssen:
In diesem Fall liegt das Hauptproblem also einfach in der URL. HTTPS eines beliebigen Repositorys finden Sie jetzt oben auf der Repository-Seite.
quelle
das hat bei mir funktioniert:
1- Entfernen Sie alle Ursprünge
(vgl. https://www.kernel.org/pub/software/scm/git/docs/git-remote.html )
* remote: "Verwalten Sie die Repositorys (" Fernbedienungen "), deren Zweige Sie verfolgen.
* rm: "Entfernen Sie die benannte Fernbedienung. Alle Fernverfolgungszweige und Konfigurationseinstellungen für die Fernbedienung werden entfernt."
2- Überprüfen Sie, ob alles entfernt wurde:
3- Neuen Ursprungsmaster hinzufügen
das war's Leute!
quelle
Stellen Sie sicher
ssh-add -l
, dass ein Fingerabdruck eines SSH-Schlüssels angezeigt wird, der in der Liste der SSH-Schlüssel in Ihrem Github-Konto enthalten ist.Wenn die Ausgabe leer ist, Sie aber wissen, dass Sie einen privaten SSH-Schlüssel haben, der mit Ihrem Github-Konto funktioniert, führen Sie
ssh-add
diesen Schlüssel aus (gefunden in~/.ssh
. Er istid_rsa
standardmäßig benannt, sodass Sie ihn wahrscheinlich ausführenssh-add id_rsa
).Befolgen Sie andernfalls diese Anweisungen , um ein SSH-Schlüsselpaar zu generieren.
quelle
Ich habe Github früher für eines meiner PHP-Projekte verwendet. Während ich github benutzte, benutzte ich ssh anstelle von https. Ich hatte meinen Computer so eingerichtet und jedes Mal, wenn ich den Code festschrieb und pushe, wurde ich nach meinem Passwort für den RSA-Schlüssel gefragt.
Nach einigen Tagen hörte ich auf, an dem PHP-Projekt zu arbeiten und vergaß mein RSA-Passwort. Vor kurzem habe ich angefangen, an einem Java-Projekt zu arbeiten und bin zu Bitbucket gewechselt. Da ich das Passwort vergessen hatte und es wohl keine Möglichkeit gibt, es wiederherzustellen , entschied ich mich, das https-Protokoll (empfohlen) für das neue Projekt zu verwenden, und bekam den gleichen Fehler in der Frage.
Wie habe ich es gelöst?
Ich habe diesen Befehl ausgeführt, um meinem Git zu sagen, dass er https anstelle von ssh verwenden soll:
Entfernen Sie gegebenenfalls eine Fernbedienung
Wiederholen Sie alles von Git Init bis Git Push und es funktioniert!
PS: Ich habe während des Debug-Prozesses auch ssh von meinem Computer deinstalliert, weil ich dachte, dass das Problem durch Entfernen behoben wird. Ja, ich weiß!! :) :)
quelle
Problem behoben, wenn Sie den SSH-Zugriff auf https-Zugriff auf das Remote-Repository ändern:
quelle
Ich denke, ich habe die beste Antwort für Sie, Ihre Git-Apps lesen Ihre id_rsa.pub im Root-Benutzerverzeichnis
Aus diesem Grund kann Ihr Schlüssel in /home/your_username/.ssh/id_rsa.pub von git nicht gelesen werden. Sie müssen also den Schlüssel in /home/root/.ssh/ erstellen.
Kopieren Sie dann den Schlüssel in Ihr Github-Konto. Es hat bei mir funktioniert. Du kannst es versuchen.
quelle
Wenn Sie bereits einen SSH-Schlüssel erstellt haben und weiterhin die Fehlermeldung erhalten, müssen Sie dem Benutzer die Berechtigung zum Lesen und Schreiben in den Ordner erteilen, in den Sie klonen. Um dies zu tun ,
sudo chmod 777 <your_folder_name_here>"
. Dies geschieht natürlich, nachdem Sie einen SSH-Schlüssel generiert haben und dieser Fehler weiterhin angezeigt wird. Hoffe das hilft zukünftigen Nutzern.Bearbeiten
Um dies zu ergänzen, verwenden Sie admin in Windows, wenn Sie die Git-Bash verwenden
quelle
sudo chown -R $USER:$USER <your_folder_name_here>
Ich hatte vor kurzem das gleiche Problem. Dies kann hilfreich sein, wenn Sie sofort eine Korrektur benötigen. Dies muss jedoch jedes Mal erfolgen, wenn Sie Ihr System neu starten
Führen Sie vom Terminal aus Folgendes aus:
ssh-add ~/.ssh/id_rsa
Geben Sie Ihr Systemkennwort ein und das sollte funktionieren.
quelle
Ich möchte einige meiner Ergebnisse hinzufügen:
Wenn Sie verwenden
GitBash
, stellen Sie sicher, dass der SSH-Schlüssel in gespeichert ist~/.ssh/id_rsa
.Standardmäßig wird
GitBash
nach gesucht~/.ssh/id_rsa
Standardpfad für den SSH-Schlüssel gesucht.Auch der Dateiname ist
id_rsa
wichtig. Wenn Sie Ihren SSH-Schlüssel in einem anderen Dateinamen oder Pfad speichern, wird derPermission Denied(publickey)
Fehler ausgegeben.quelle
OK, es gibt nur wenige Lösungen für diese, einige davon wurden vielleicht bereits erwähnt, aber nur, um sie zusammenzuhalten:
Stellen Sie sicher, dass Ihre Schlüssel vorhanden sind, standardmäßig ein anderer Ordner ~ / .ssh /, dh id.rsa und id.rsa.pub
Stellen Sie sicher, dass die Schlüssel die richtigen Berechtigungen haben. Sie können chmod ausführen:
chmod 600 ~ / .ssh / id_rsa
chmod 644 ~ / .ssh / id_rsa.pub
Stellen Sie sicher, dass der Inhalt Ihres öffentlichen Schlüssels (id_rsa.pub) mit dem in der Remote-Repository-Konfiguration hochgeladenen übereinstimmt
Beheben Sie abschließend die Probleme mit dem ssh-Agenten: ssh-add
Weitere Informationen: https://itcodehub.blogspot.com/2015/01/ssh-add-problems-with-ssh-agent-and.html
quelle
chmod
wie Sie es beschrieben haben. Vielen Dank.Wenn Sie die Benutzeroberfläche von GitHub für Mac verwenden, überprüfen Sie die Einstellungen, um sicherzustellen, dass Sie angemeldet sind.
quelle
Ich habe den gleichen Fehler beim 'Git Push' erhalten. Auf der Client-Seite hatte ich zwei Herkunft und Master. Ich habe einen entfernt, dann hat es gut funktioniert.
quelle
Sie können die HTTP-URL verwenden, um sich anzumelden
Ich denke, Sie versuchen, sich mit der SSH-URL anzumelden, wenn Sie Git Push sagen, wenn Sie nur nach dem Passwort fragen, denken Sie daran, dass Sie eine Verbindung über SSH herstellen. Besser, Sie verwenden die http-URL.
quelle
Auch in Ubuntu habe ich dieses Problem, obwohl in den Einstellungen von BitBucket bereits ein SSH-Schlüssel eingegeben wurde. Der Grund war, ich habe folgendes versucht:
Ich weiß nicht warum, aber es wurde mit gelöst
Kein Sudo verwendet.
quelle
Für mich habe ich das versucht -
dann renne ich
und zum Generieren des Schlüssels können Sie ausführen
Dadurch wird das Schlüsselpaar (öffentlich und privat) generiert.
Sie können diesen Schlüssel in Github speichern, um weitere Informationen zu erhalten. Lesen Sie dies Hinzufügen eines neuen SSH-Schlüssels zu Ihrem GitHub-Konto
Ich hoffe es wird anderen helfen :)
quelle
Ich hatte ein ähnliches Problem wie @Batman. Da ich dies jedoch unter / usr / local / src / projectname ausführte, war das Ausführen ohne sudo keine Option.
Fügen Sie einfach das Flag -E hinzu , um die Umgebung zu schützen (Ihr ~ / .ssh / Pfad).
$ sudo -E git clone git@your_repo
Vom Mann Sudo:
quelle
Ein Szenario, in dem dies passieren wird, ist das Befolgen der GitHub-Anweisungen, nachdem Sie Ihr Repository erstellt haben. Git wird Sie anweisen, Ihre Fernbedienung mit so etwas hinzuzufügen.
git remote add origin [email protected]:<user>/<project>.git
Ersetzen Sie <> durch Werte, die sich auf Ihr Konto beziehen.
Die Lösung besteht darin, das
.git
Suffix zu entfernen . Fügen Sie die Fernbedienung wie folgt hinzu:git remote add origin [email protected]:<user>/<project>
quelle
tl; dr
in
~/.ssh/config
putSzenario Wenn Sie eine Version von openSSH> 7 verwenden, wie beispielsweise auf einem Touchbar-MacBook Pro, ist dies der Fall
ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0
Sie hatten auch einen älteren Mac, auf dem Ihr Schlüssel ursprünglich auf Github gespeichert war. Möglicherweise wird ein Schlüssel id_dsa verwendet. OpenSSH v7 fügt die Verwendung dieser DSA-Schlüssel (einschließlich dieser
ssh-dss
) nicht standardmäßig ein , aber Sie können sie trotzdem wieder hinzufügen, indem Sie den folgenden Code in Ihren eingeben~/.ssh/config
Quelle, die für mich funktioniert hat, ist dieser Gentoo-Newsletter
Jetzt können Sie zumindest GitHub verwenden und dann Ihre Schlüssel auf RSA fixieren.
quelle
Ich habe diese Seite gefunden, als ich nach einer Lösung für eine ähnliche Fehlermeldung
git pull
auf einem Remote-Host gesucht habe :Ich wurde von meinem lokalen Computer über mit dem Remote-Host verbunden
ssh -AY remote_hostname
. Dies ist keine Lösung für die Frage von OP, aber nützlich für andere, die auf diese Seite stoßen. Veröffentlichen Sie sie daher hier.Beachten Sie, dass in meinem Fall
git pull
auf meinem lokalen Computer einwandfrei funktioniert (dh der SSH-Schlüssel wurde eingerichtet und dem GitHub-Konto usw. hinzugefügt). Ich habe mein Problem gelöst, indem ich dies~/.ssh/config
auf meinem Laptop hinzugefügt habe:Ich habe mich dann wieder mit dem Remote-Host verbunden
ssh -AY remote_hostname
undgit pull
jetzt gearbeitet. Durch die Änderung der Konfiguration kann mein SSH-Schlüsselpaar von meinem lokalen Computer an einen beliebigen Host weitergeleitet werden. Die-A
Option,ssh
es in dieser SSH-Sitzung tatsächlich weiterzuleiten. Weitere Details finden Sie hier.quelle
Möglicherweise ist Ihr SSH-Agent nicht aktiviert. Sie können es versuchen
http://git-scm.com/
Es installieren
Aktivieren Sie ssh-agent
C: \ Programme \ Git \ cmd
start-ssh-agent
quelle
Gehen Sie zu Ihrem GitHub-Konto-Dashboard, suchen Sie Ihr Projekt-Repository und klicken Sie auf die Registerkarte Einstellungen. Unter Schlüssel bereitstellen müssen Sie Ihren SSH-Schlüssel hinzufügen. Öffnen Sie das Terminal und geben Sie Folgendes ein:
Dadurch wird der Schlüssel aus Ihrer Datei id_rsa.pub kopiert. Gehen Sie einfach zurück zum GitHub-Dashboard, fügen Sie es ein, klicken Sie auf Schlüssel hinzufügen und fertig .
Die gleiche Lösung gilt für Bitbucket-Konten.
quelle