GitHub-Fehlermeldung - Berechtigung verweigert (publickey)


701

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.



1
Könnten Berechtigungsprobleme mit .ssh- und authoirzed-Schlüsseln sein. Ssh ist ziemlich streng, google es.
Karl Morrison


Wie die Antwort von @bdukes hier ist der Befehl mit https und es wird funktionieren, Windows-Beispiel: "PS C: \ xampp \ htdocs> Git-Klon github.com/algolia/instant-search-demo.git "
Dung

Antworten:


662

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.


53
Dieser Fehler ist nicht exklusiv für GitHub. Ich erhalte den gleichen Fehler mit BitBucket und kratzte mir am Kopf, wie ich ihn beheben kann ...
IgorGanapolsky

32
Der helfende Teil wird auf ssh -vT git@github.comder Github-Hilfeseite verwendet, um zu debuggen, welchen Schlüssel Ihr Repo verwendet. Ich schlage vor, Sie fügen es in Ihre Antwort ein.
MaximeBernard

25
Die positive Abstimmung über die Verwendung von HTTPS anstelle von SSL ist etwas enttäuschend. SSH ist weitaus bequemer. Der obige Vorschlag von @MaximeBernard löste das Problem für mich: GIT suchte nicht nach der richtigen Stelle für das .ssh-Verzeichnis. Die Verwendung ssh -vT git@github.combietet viele Informationen darüber, warum es nicht funktioniert.
Christophe

1
Gemäß meinem obigen Kommentar besteht eine dritte Option darin, dass der Befehl von einem anderen Konto als dem mit den SSH-Schlüsseln gesendet wird (z. B. als Root ausgeführt).
David LeBauer

1
Wie @ theapache64 erwähnt: Wenn Sie auf einem Mac sind und bereits einen SSH-Schlüssel generiert haben, fehlt möglicherweise "ssh-add". Hat für mich gearbeitet.
Digitale Unbeständigkeit

78

Haben Sie eine Konfigurationsdatei in Ihrem Verzeichnis ~ / .ssh erstellt? Es sollte Inhalte wie diese haben:

Host github.com 
 IdentityFile ~/.ssh/github_rsa

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.


1
Ich hatte den SSH-Schlüssel generiert und konnte einige Zeit ohne Probleme gut arbeiten. Eines schönen Tages (wahrscheinlich nach dem Neustart) funktionierte es nicht mehr, während der Schlüssel bei Github und auf meinem lokalen System intakt war. Ich habe die "Konfigurationsdatei" hinzugefügt und die Schlüsselzuordnung zur Domäne angegeben. Details oben in igor-ganapolsky-Antwort angegeben. Es funktioniert gut !
Parasrish

3
Dies löst in der Tat mein Problem! Danke vielmals! Aber ich habe eine Frage. ssh -T git@github.comAntworten Sie vor der Verwendung Ihrer Methode korrekt, während git push -u origin masterderselbe Fehler wie in der Frage angezeigt wird. Warum kann ich mich korrekt verbinden, aber nicht darauf drücken oder von dort abrufen?
Eden Harder

@EdenHarder Ich stehe vor dem gleichen Problem. Hast du eine Antwort darauf gefunden?
Vreddhi Bhat

64

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/ ).

ssh-agent -s
ssh-add ~/.ssh/id_rsa

Danach funktioniert alles einwandfrei, Git kann den richtigen Schlüssel anzeigen, bevor er es nicht tut.


5
Präfekt! Arbeitete auf meinem MacOS X.
stillatmylinux

9
Es konnte keine Verbindung zu Ihrem Authentifizierungsagenten hergestellt werden.
Mona Jalal

versuchen Sie dies auszuführen: evalssh-agent -s
Vincent acent

@ MonaJalal verwendenssh-add ~/.ssh/github_rsa
Anirban Nag 'tintinmj'

Perfekt. es funktioniert. Vielen Dank. 👌
Erkam KUCET

62

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 .


2
Vielen Dank dafür ... Ich habe einen SSH-Schlüssel erhalten, der jetzt von GitHub generiert wurde. Mit welchem ​​Befehl werden die beiden jetzt im Terminal verknüpft? Vielen Dank!
Webwrks

2
Dafür gibt es keinen Terminalbefehl. Siehe Schritt 4 in der Dokumentation, die ich in meiner Antwort verlinkt habe.
CDhowie

Ich habe das Repository mit HTTPS geklont. Muss ich in diesem Fall einen SSH-Schlüssel generieren?
Pabitra Dash

@PabitraDash Nein. HTTPS verwendet keine SSH-Schlüssel.
CDhowie

51

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

git remote -v

Die URL muss ungefähr so ​​lauten: ssh: //git@github.com/YourDirectory/YourProject.git; Wenn Sie git@github.com nicht sehen, verwenden Sie

git remote set-url origin git://github.com/YourDirectory/YourProject.git

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.


9
Sei vorsichtig mit den URLs. Sie unterscheiden sich zwischen https und ssh und die Beiträge auf dieser Seite machen es nicht so deutlich. Jedes Git-Projekt hat eine .git / config-Datei im Projektstammverzeichnis. Dort können Sie die Remote- und Branch-Informationen einstellen. Festlegen der Fernbedienung für https: url = github.com/<IhrGitUserName>/<IhrGitProjekt>.git Während für git + ssh: url = git@github.com: <IhrGitUserName> / <IhrGitProjekt> .git Die falsche URL verursacht die Die Berechtigung für den öffentlichen Schlüssel wurde verweigert. Dies ist wahrscheinlich kein eindeutiger Fehler.
DarKoram

für meinen Fall im Finale funktioniert nur mit in dem Teil: Git Remote Set-URL Ursprung github.com/your_directory/your_project.git
rld

19

Angenommen, Sie verbinden GitHub über SSH, können Sie den folgenden Befehl ausführen, um dies zu bestätigen.

$git config --get remote.origin.url

Wenn Sie ein Ergebnis im folgenden Format erhalten: git@github.com: 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.

$ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

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 .


Diese Lösung funktionierte auf Ubuntu, $ ssh-add /root/.ssh/id_rsa
Feras

Dies löste auch ein seltsames Durcheinander in meiner Umgebung. Eine Modifikation, die ich vorschlagen würde, ist, die xclip-Abhängigkeit zu vermeiden. Verwenden Sie einfachcat ~/.ssh/id_rsa.pub
Pogrindis

19

Zuerst müssen wir nach vorhandenen SSH-Schlüsseln auf Ihrem Computer suchen. Öffnen Sie das Terminal und führen Sie Folgendes aus:

ls -al ~/.ssh

#or

cd ~/.ssh
ls

und das listet die Dateien in Ihrem .ssh-Verzeichnis auf

Und schließlich je nachdem, was Sie sehen (in meinem Fall war):

 github_rsa  github_rsa.pub known_hosts

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")


Muss ich die SHAAusgabe von diesem Befehl nach Github kopieren ?
IgorGanapolsky

Nein, führen Sie einfach "ssh-keygen -lf ~ / .ssh / <YOUR_GITHUB_RSA_FILE.pub>" aus
d1jhoni1b

Aus diesem Grund habe ich auch einen Befehl angehängt, der "Listet die Dateien in Ihrem .ssh-Verzeichnis auf" ... damit Sie wissen, aus welcher Datei Sie Ihren Schlüssel extrahieren müssen (ssh-keygen). Denken Sie daran, dass RSA-Zertifikate mit Schlüsselpaaren gepaart sind, 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 erneut "verlinken"
d1jhoni1b

$ ssh-keygen -lf ~ / .ssh / github_rsa.pub /home/mona/.ssh/github_rsa.pub: Keine solche Datei oder kein solches Verzeichnis
Mona Jalal

"Keine solche Datei oder kein solches Verzeichnis" bedeutet, dass Sie diesen Dateinamen oder Pfad nicht haben ... was erhalten Sie, wenn Sie ls -al ~ / .ssh ausführen?
d1jhoni1b

14

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!


2
Das gleiche Problem hat bei mir funktioniert: `ssh-add -K ~ / .ssh / id_rsa`
mvladk

11

Eine andere Lösung :

Erstellen Sie die SSH-Schlüssel, geben Sie ein ssh-keygen -t rsa -C "your_email@example.com". 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:

cat ~/.ssh/id_rsa.pub 

Sie erhalten so etwas wie:

cat ~/.ssh/id_rsa.pub 

ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAACAQCvMzmFEUPvaA1AFEBH6zGIF3N6pVE2SJv9V1MHgEwk4C7xovdk7Lr4LDoqEcqxgeJftwWQWWVrWWf7q9qCdHTAanH2Q5vx5nZjLB+B7saksehVOPWDR/MOSpVcr5bwIjf8dc8u5S8h24uBlguGkX+4lFJ+zwhiuwJlhykMvs5py1gD2hy+hvOs1Y17JPWhVVesGV3tlmtbfVolEiv9KShgkk3Hq56fyl+QmPzX1jya4TIC3k55FTzwRWBd+IpblbrGlrIBS6hvpHQpgUs47nSHLEHTn0Xmn6Q== user@email.com

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.


10

Falls Sie nicht auf Ihr eigenes Repository zugreifen oder in ein geklontes Repository klonen (mithilfe einiger "git submodule ..." - Befehle):

Im Home-Verzeichnis Ihres Repositorys:

$ ls -a

1. Öffnen Sie ".gitmodules" und Sie werden so etwas finden:

[submodule "XXX"]
    path = XXX
    url = git@github.com:YYY/XXX.git

Ändern Sie die letzte Zeile in das HTTPS des Repositorys, das Sie abrufen müssen:

[submodule "XXX"]
    path = XXX
    https://github.com/YYY/XXX.git

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:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/YYY/XXX.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[submodule "XXX"]
    url = git@github.com:YYY/XXX.git

Ändern Sie die letzte Zeile in das HTTPS des Repositorys, das Sie abrufen müssen:

    url = https://github.com/YYY/XXX.git

In diesem Fall liegt das Hauptproblem also einfach in der URL. HTTPS eines beliebigen Repositorys finden Sie jetzt oben auf der Repository-Seite.


9

das hat bei mir funktioniert:

1- Entfernen Sie alle Ursprünge

git remote rm origin  

(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:

git remote -v  

3- Neuen Ursprungsmaster hinzufügen

git remote add origin git@github.com:YOUR-GIT/YOUR-REPO.git

das war's Leute!


1
Das war hilfreich. Mit diesen Befehlen werde ich nach dem Github-Benutzernamen und dem Kontokennwort gefragt. Danach kann ich einfach auf den Github-Link pushen, indem ich das Terminal eingebe: Git Push -u Origin Master
Noha Salah

8

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-adddiesen Schlüssel aus (gefunden in ~/.ssh. Er ist id_rsastandardmäßig benannt, sodass Sie ihn wahrscheinlich ausführen ssh-add id_rsa).

Befolgen Sie andernfalls diese Anweisungen , um ein SSH-Schlüsselpaar zu generieren.


8

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?

  1. Ich habe diesen Befehl ausgeführt, um meinem Git zu sagen, dass er https anstelle von ssh verwenden soll:

    git config --global url."https://".insteadOf git://
    
  2. Entfernen Sie gegebenenfalls eine Fernbedienung

    git remote rm origin
    
  3. 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ß!! :) :)


Ich denke nicht, dass es eine gute Idee ist, Leute auf https hinzuweisen, wenn auch ssh funktionieren soll. Darüber hinaus ist es unwahrscheinlich, dass dies für Personen funktioniert, die hinter einem Unternehmens-Proxy stehen.
Igor Stoppa

8

Problem behoben, wenn Sie den SSH-Zugriff auf https-Zugriff auf das Remote-Repository ändern:

git remote set-url origin https_link_to_repository

git push -u origin master

5

Ich denke, ich habe die beste Antwort für Sie, Ihre Git-Apps lesen Ihre id_rsa.pub im Root-Benutzerverzeichnis

/home/root/.ssh/id_rsa.pub

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.

$ sudo su
$ ssh-keygen
$ cd ~/.ssh
$ cat id_rsa.pub

Kopieren Sie dann den Schlüssel in Ihr Github-Konto. Es hat bei mir funktioniert. Du kannst es versuchen.


Dies ließ mich zu der Antwort kommen, die ich suchte. Ich habe aus Gewohnheit einen Klon mit Sudo ausgeführt, daher wurde nach den falschen Anmeldeinformationen gesucht. Nahm den Sudo ab und mein Klon lief gut.
Taekahn

4

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


Diese. Dies kann auch das Problem verursachen.
KevinO

1
Dies war mein Problem, aber ich würde nicht empfehlen, 777-Berechtigungen für einen Ordner festzulegen. In meinem Fall gehörte der Ordner dem Root-Benutzer, und ich musste ihm Zugriff auf mein Nicht-Root-Benutzerkonto gewähren. Ich habe das so gemacht:sudo chown -R $USER:$USER <your_folder_name_here>
David

@ David, das empfehle ich auch. 777 ist ziemlich hackig und nicht sicher.
Kevin

3

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.


3

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 GitBashnach gesucht~/.ssh/id_rsa Standardpfad für den SSH-Schlüssel gesucht.

Auch der Dateiname ist id_rsawichtig. Wenn Sie Ihren SSH-Schlüssel in einem anderen Dateinamen oder Pfad speichern, wird der Permission Denied(publickey)Fehler ausgegeben.


3

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


Ich hatte meinen SSH-Schlüssel mit einem als FAT32 formatierten USB-Laufwerk von einem Computer auf einen anderen kopiert. Das hat die Berechtigungen der Dateien geändert. Unter Ubuntu bin ich es gewohnt, bei Bedarf automatisch nach dem SSH-Passwort gefragt zu werden, aber das geschah nur stillschweigend, bis ich so lief, chmodwie Sie es beschrieben haben. Vielen Dank.
Lydell

1

Wenn Sie die Benutzeroberfläche von GitHub für Mac verwenden, überprüfen Sie die Einstellungen, um sicherzustellen, dass Sie angemeldet sind.


1

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.


1

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.


1

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:

sudo git push origin master

Ich weiß nicht warum, aber es wurde mit gelöst

git push origin master

Kein Sudo verwendet.


1

Für mich habe ich das versucht -

eval "$(ssh-agent -s)"

dann renne ich

ssh-add ~/.ssh/path-to-the-keyfile

und zum Generieren des Schlüssels können Sie ausführen

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

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 :)


1

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:

-E, --preserve-env Gibt der Sicherheitsrichtlinie an, dass der Benutzer seine vorhandenen Umgebungsvariablen erhalten möchte. Die Sicherheitsrichtlinie kann einen Fehler zurückgeben, wenn der Benutzer keine Berechtigung zum Schutz der Umgebung hat.


1

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 git@github.com:<user>/<project>.git

Ersetzen Sie <> durch Werte, die sich auf Ihr Konto beziehen.

Die Lösung besteht darin, das .gitSuffix zu entfernen . Fügen Sie die Fernbedienung wie folgt hinzu:

git remote add origin git@github.com:<user>/<project>


1

tl; dr

in ~/.ssh/configput

PubkeyAcceptedKeyTypes=+ssh-dss

Szenario Wenn Sie eine Version von openSSH> 7 verwenden, wie beispielsweise auf einem Touchbar-MacBook Pro, ist dies der Fallssh -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

PubkeyAcceptedKeyTypes=+ssh-dss

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.


1

Ich habe diese Seite gefunden, als ich nach einer Lösung für eine ähnliche Fehlermeldung git pullauf einem Remote-Host gesucht habe :

$ git pull
Permission denied (publickey).
fatal: Could not read from remote repository.

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

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 pullauf 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/configauf meinem Laptop hinzugefügt habe:

Host *
     ForwardAgent yes

Ich habe mich dann wieder mit dem Remote-Host verbunden ssh -AY remote_hostnameund git pulljetzt gearbeitet. Durch die Änderung der Konfiguration kann mein SSH-Schlüsselpaar von meinem lokalen Computer an einen beliebigen Host weitergeleitet werden. Die -AOption, sshes in dieser SSH-Sitzung tatsächlich weiterzuleiten. Weitere Details finden Sie hier.


0

Möglicherweise ist Ihr SSH-Agent nicht aktiviert. Sie können es versuchen

  1. Git herunterladen

http://git-scm.com/

  1. Es installieren

  2. Aktivieren Sie ssh-agent

C: \ Programme \ Git \ cmd

start-ssh-agent


0

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:

cat ~/.ssh/id_rsa.pub | pbcopy 

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.

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.