it-swarm.com.de

GitHub-Fehlermeldung - Berechtigung verweigert (publickey)

Hat jemand diesen Fehler gesehen und weiß was zu tun ist?

Ich benutze das Terminal, bin im Root, 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.
664
webwrks

GitHub kann Sie nicht authentifizieren. Entweder haben Sie keinen SSH-Schlüssel eingerichtet, weil Sie nicht richten Sie einen auf Ihrem Computer ein 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 den Umgang mit SSH-Schlüsseln zu vermeiden. Dies ist GitHubs empfohlene Methode .

Außerdem hat GitHub eine Hilfeseite speziell für diese Fehlermeldung und erklärt detaillierter alles, was Sie überprüfen können.

634
bdukes

Hast du eine config Datei in deinem ~/.ssh Verzeichnis 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 der Reihe nach genommen und für die Github-Authentifizierung verwendet. Dies hängt also vom Namen der Schlüsseldatei ab.

67
IgorGanapolsky

Sie müssen einen SSH-Schlüssel generieren (falls Sie keinen haben) und den öffentlichen Schlüssel mit Ihrem Github-Konto verknüpfen. Siehe Githubs eigene Dokumentation .

59
cdhowie

Ich kenne dieses Problem. Fügen Sie nach dem Hinzufügen des SSH-Schlüssels auch Ihren SSH-Schlüssel zum SSH-Agenten hinzu (aus offiziellen Dokumenten https://help.github.com/articles/generating-ssh-keys/ ).

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

Nachdem alles geklappt hat, kann Git den richtigen Schlüssel anzeigen, bevor es nicht mehr funktioniert.

57

Das ist mir passiert. Aus irgendeinem Grund wurde mein Ursprung 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: //[email protected]/YourDirectory/YourProject.git; Wenn Sie [email protected] nicht sehen, verwenden Sie

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

um es richtig zu machen. Oder Sie können die github-App verwenden, um die URL des primären Remote-Repositorys im Einstellungsbereich Ihres jeweiligen Repositorys zu überprüfen und festzulegen.

49
rmundo

Zuerst müssen wir auf Ihrem Computer nach vorhandenen SSH-Schlüsseln suchen. Öffne das Terminal und starte:

ls -al ~/.ssh

#or

cd ~/.ssh
ls

daraufhin werden die Dateien in Ihrem .ssh-Verzeichnis aufgelistet

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 hoffen Sie, dass dies Ihre "git Push Origin" -Probleme löst

$ ssh-keygen -lf ~/.ssh/github_rsa.pub

HINWEIS: RSA-Zertifikate sind mit Schlüsseln gepaart, sodass Sie über ein privates und ein öffentliches Zertifikat verfügen. Auf private kann nicht zugegriffen werden, da es (in diesem Fall) zu github gehört fehlt möglicherweise, wenn dieser Fehler auftritt (zumindest war das mein Fall, mein Github-Account oder mein Repo sind irgendwie durcheinander geraten und ich musste den zuvor generierten öffentlichen Schlüssel "verlinken")

19
d1jhoni1b

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 mit folgendem 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.

$ssh-keygen -t rsa -b 4096 -C "[email protected]"

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 dem ssh-Agenten hinzu

  • Stellen Sie sicher, dass ssh-agent aktiviert ist

    $eval "$(ssh-agent -s)"

  • Fügen Sie Ihren SSH-Schlüssel dem ssh-Agenten hinzu:

    $ssh-add ~/.ssh/id_rsa

Schritt 3 Fügen Sie Ihren SSH-Schlüssel 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

Gehe zu Einstellungen -> SSH-Schlüssel (Seitenleiste Persönliche Einstellungen) - > SSH-Schlüssel hinzufügen -> Formular ausfüllen (Schlüssel befindet sich in Ihrer Zwischenablage, verwenden Sie einfach Strg + V) -> Schlüssel hinzufügen

Nachdem Sie die obigen Schritte ausgeführt haben, sollten Sie das Berechtigungsproblem lösen.

Referenzlink: Generieren von SSH-Schlüsseln .

18
xinerd

Ich habe diesen Fehler bekommen. Es stellte sich heraus, dass ich gerade ein Upgrade von OSX auf Sierra durchgeführt 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 ausschließen"

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!

14
jfunk

Falls Sie nicht auf Ihr eigenes Repository zugreifen oder in ein geklontes Repository klonen (mit einigen "git submodule ..." - Befehlen):

Im Home-Verzeichnis Ihres Repositorys:

$ ls -a

1. Öffne ".gitmodules", und du wirst so etwas finden:

[submodule "XXX"]
    path = XXX
    url = [email protected]:YYY/XXX.git

Ändern Sie die letzte Zeile in HTTPS des zu ziehenden Repositorys:

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

Save ".gitmodules" und run der Befehl für Submodule und ".git" werden aktualisiert.

2. Öffne ".git", gehe zur "config" -Datei und du wirst 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 = [email protected]:YYY/XXX.git

Ändern Sie die letzte Zeile in HTTPS des zu ziehenden Repositorys:

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

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

9
N. Osil

Stellen Sie sicher, dass ssh-add -l einen Fingerabdruck eines SSH-Schlüssels anzeigt, der in der Liste der SSH-Schlüssel in Ihrem Github-Konto enthalten ist.

Wenn die Ausgabe leer ist, Sie jedoch wissen, dass Sie einen privaten SSH-Schlüssel haben, der mit Ihrem Github-Konto funktioniert, führen Sie ssh-add auf diesem Schlüssel aus (gefunden in ~/.ssh. Der Name lautet standardmäßig id_rsa. Sie werden also wahrscheinlich ssh-add id_rsa) ausführen.

Andernfalls befolgen Sie diese Anweisungen , um ein SSH-Schlüsselpaar zu generieren.

8
Rose Perrone

das hat bei mir geklappt:

1- Entfernen Sie alle Ursprünge

git remote rm Origin  

(Siehe https://www.kernel.org/pub/software/scm/git/docs/git-remote.html )

* remote: "Verwalten Sie die Repositorys (" Remotes "), deren Zweige Sie verfolgen.

* rm: "Entfernen Sie die benannte Fernbedienung. Alle Remote-Tracking-Zweige und Konfigurationseinstellungen für die Fernbedienung werden entfernt."

2- Überprüfen Sie, ob alles entfernt wurde:

git remote -v  

3- Neuen Origin-Master hinzufügen

git remote add Origin [email protected]:YOUR-GIT/YOUR-REPO.git

das war's Leute!

7
marcdahan

Eine andere Lösung:

erstellen Sie die SSH-Schlüssel, und geben Sie ssh-keygen -t rsa -C "[email protected]" ein. Dadurch werden die Dateien id_rsa und id_rsa.pub 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== [email protected]

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.

7
Badr Bellaj

Ich habe Github früher für eines meiner PHP-Projekte verwendet. Bei der Verwendung von Github habe ich ssh anstelle von https verwendet. Ich hatte meine Maschine so eingerichtet und jedes Mal, wenn ich den Code festgeschrieben und gepusht habe, wurde ich nach meinem RSA-Schlüssel-Passwort 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 keine Möglichkeit gibt, es wiederherzustellen , habe ich mich für das https-Protokoll (empfohlen) für das neue Projekt entschieden und den gleichen Fehler gefragt in der Frage.

Wie habe ich es gelöst?

  1. Führen Sie diesen Befehl aus, um meinem Git mitzuteilen, 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 ssh auch während des Debug-Vorgangs von meinem Computer deinstalliert, weil ich dachte, dass das Problem dadurch behoben werden kann, dass ich es entferne. Ja, ich weiß!! :)

6
3AK

Ich glaube, 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

Deshalb kann dein Schlüssel in /home/your_username/.ssh/id_rsa.pub nicht von git 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 für mich funktioniert. Du kannst es versuchen.

5
digembok

Wenn Sie bereits einen SSH-Schlüssel erstellt haben und die Fehlermeldung weiterhin angezeigt wird, müssen Sie dem Benutzer Lese- und Schreibrechte für den Ordner erteilen, in den Sie klonen. Dazu Sudo chmod 777 <your_folder_name_here>". Dies ist natürlich der Fall, nachdem Sie einen SSH-Schlüssel generiert haben und dieser Fehler weiterhin auftritt. Hoffe das hilft zukünftigen Usern.

Bearbeiten

Um dies zu ergänzen, verwenden Sie admin in Windows, wenn Sie die Git-Bash verwenden

4
Kevin

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

git remote set-url Origin https_link_to_repository

git Push -u Origin master
3
george mano

Ich möchte einige meiner Erkenntnisse hinzufügen:

Wenn Sie GitBash verwenden, stellen Sie sicher, dass der SSH-Schlüssel in ~/.ssh/id_rsa gespeichert ist.

Standardmäßig sucht GitBash nach ~/.ssh/id_rsa als Standardpfad für den SSH-Schlüssel.

Auch der Dateiname id_rsa spielt eine Rolle. Wenn Sie Ihren SSH-Schlüssel unter einem anderen Dateinamen oder Pfad speichern, wird der Fehler Permission Denied(publickey) ausgelöst.

3
vinaykumar2491

Ich hatte vor kurzem das gleiche Problem. Dies kann hilfreich sein, wenn Sie sofort eine Fehlerbehebung benötigen. Dies muss jedoch jedes Mal durchgeführt werden, wenn Sie das System neu starten

Führen Sie vom Terminal aus: ssh-add ~/.ssh/id_rsa

Geben Sie Ihr Systemkennwort ein und das sollte funktionieren.

3
user7506706

Ich hatte ein ähnliches Problem wie @Batman. Da ich dies jedoch unter/usr/local/src/projectname ausführte, kam das Ausführen ohne Sudo nicht in Frage.

Fügen Sie einfach das - E Flag hinzu, um die Umgebung (Ihr ~/.ssh/Pfad) zu erhalten.

$ Sudo -E git clone [email protected]_repo

Vom Mann Sudo:

-E, --preserve-env Gibt an, welche Sicherheitsrichtlinie der Benutzer für seine vorhandenen Umgebungsvariablen beibehalten möchte. Die Sicherheitsrichtlinie kann einen Fehler zurückgeben, wenn der Benutzer keine Berechtigung zum Schützen der Umgebung hat.

1
justin

Auch in Ubuntu, obwohl in den Einstellungen in BitBucket bereits ein SSH-Schlüssel eingegeben wurde, trat dieses Problem auf. Der Grund war, dass ich Folgendes versuchte:

Sudo git Push Origin master

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

git Push Origin master

Kein Sudo verwendet.

1
Nabin

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 Suffix .git zu entfernen. Fügen Sie die Fernbedienung wie folgt hinzu:

git remote add Origin [email protected]:<user>/<project>

1
Litehouse

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

1
juliarm

sie können Https-URL verwenden, um sich anzumelden

ich denke, Sie versuchen, sich mit SSH-URL anzumelden, wenn Sie Git Push sagen.

1
venkat razesh

tl; dr

in ~/.ssh/config setzen

PubkeyAcceptedKeyTypes=+ssh-dss

Szenario Wenn Sie eine Version von openSSH> 7 verwenden, wie z. B. auf einem Touchbar MacBook Pro, ist dies ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0

Sie hatten auch einen älteren Mac, auf dem ursprünglich Ihr Schlüssel auf Github gespeichert war. Möglicherweise wird ein id_dsa-Schlüssel verwendet. OpenSSH v7 fügt standardmäßig nicht die Verwendung dieser DSA-Schlüssel ein (die diesen ssh-dss enthalten), aber Sie können ihn trotzdem wieder hinzufügen, indem Sie den folgenden Code in Ihren ~/.ssh/config einfügen.

PubkeyAcceptedKeyTypes=+ssh-dss

Quelle, die für mich funktioniert hat, ist dieses Gentoo Newsletter

Jetzt können Sie zumindest GitHub verwenden und dann Ihre Schlüssel für RSA reparieren.

1
pjammer

OK, es gibt nur wenige Lösungen für dieses Problem. Einige davon wurden möglicherweise bereits erwähnt, aber nur, um sie zusammenzuhalten:

  • vergewissern Sie sich, dass Schlüssel vorhanden sind, standardmäßig ein anderer Ordner ~/.ssh /, d. h. 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 Inhalt übereinstimmt, der in der Remote-Repository-Konfiguration hochgeladen wurde

  • Beheben Sie schließlich die Probleme mit dem ssh-Agenten: ssh-add

Weitere Informationen: https://itcodehub.blogspot.com/2015/01/ssh-add-problems-with-ssh-agent-and.html

1
xproph

Ich habe den gleichen Fehler beim "Git Push" erhalten. Auf Kundenseite hatte ich zwei Origin und Master. Ich habe einen entfernt, dann hat es gut funktioniert.

1
Pabitra Dash

Gehen Sie zu Ihrem GitHub-Konto-Dashboard, suchen Sie Ihr Projekt-Repository, klicken Sie auf 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. Kehren Sie einfach zum GitHub-Dashboard zurück, fügen Sie es ein, klicken Sie auf Schlüssel hinzufügen und fertig.

Die gleiche Lösung gilt für Bitbucket-Konten.

0
ajlaracast

Die Verwendung von Https ist in Ordnung. Führen Sie git config --global credential.helper wincred aus, um einen Github-Hilfsprogramm für Anmeldeinformationen zu erstellen, in dem Ihre Anmeldeinformationen für Sie gespeichert werden. Wenn dies nicht funktioniert, müssen Sie Ihre config -Datei in Ihrem .git -Verzeichnis bearbeiten und Origin auf die https-URL aktualisieren.

Siehe dieser Link für die Github-Dokumente.

0
Ryan Walker

Für mich habe ich Folgendes versucht -

eval "$(ssh-agent -s)"

dann renne ich

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

und zur Generierung des Schlüssels können Sie ausführen

ssh-keygen -t rsa -b 4096 -C "[email protected]"

dadurch wird das Schlüsselpaar (öffentlich und privat) generiert.

sie können diesen Schlüssel in Github speichern, um mehr darüber zu erfahren Hinzufügen eines neuen SSH-Schlüssels zu Ihrem GitHub-Konto

Ich hoffe es wird anderen helfen :)

0
Joomler

Ich hatte 2 Github-Identitätsdateien im SSH-Agenten geladen. Mein persönlicher Schlüssel und ein anderer für ein Kundenprojekt.

Ich habe den Schlüssel entfernt, der Verwirrung stiftete:

ssh-add -d id_rsa_github_somekey

0
Alex Aguilar

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

  1. Git herunterladen

http://git-scm.com/

  1. Es installieren

  2. Ssh-agent aktivieren

C:\Programme\Git\cmd

start-ssh-Agent

0
徐啟倫

Verwenden Sie die URL für diese Seite, wenn Sie GitHub als Remote hinzufügen. Es wird keinen solchen Fehler verursachen und den Code drücken

0
user9283073

Ich habe diese Seite gefunden, als ich nach einer Lösung für eine ähnliche Fehlermeldung mit git pull auf 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 war von meinem lokalen Computer über ssh -AY remote_hostname mit dem Remote-Host verbunden. Dies ist keine Lösung für die Frage von OP, aber nützlich für andere, die auf diese Seite stoßen, also posten Sie sie 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 hinzugefügt usw.). Ich habe mein Problem gelöst, indem ich dies ~/.ssh/config auf meinem Laptop hinzufügte:

Host *
     ForwardAgent yes

Ich habe mich dann mit ssh -AY remote_hostname erneut mit dem Remote-Host verbunden, und git pull hat jetzt funktioniert. Die Änderung in der Konfiguration ermöglicht es, mein SSH-Schlüsselpaar von meinem lokalen Computer an einen beliebigen Host weiterzuleiten. Die Option -A zu ssh leitet es tatsächlich in dieser SSH-Sitzung weiter. Weitere Details hier.

0
Timur Shtatland