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.
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.
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.
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 .
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.
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.
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")
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 .
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!
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.
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.
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!
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.
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?
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://
Entfernen Sie gegebenenfalls eine Fernbedienung
git remote rm Origin
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ß!! :)
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.
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
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
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.
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.
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.
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.
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>
Wenn Sie die Benutzeroberfläche von GitHub für Mac verwenden, überprüfen Sie die Einstellungen, um sicherzustellen, dass Sie angemeldet sind.
sie können Https-URL verwenden, um sich anzumelden
ich denke, Sie versuchen, sich mit SSH-URL anzumelden, wenn Sie Git Push sagen.
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.
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
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.
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.
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.
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 :)
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
Möglicherweise ist Ihr SSH-Agent nicht aktiviert. Sie können es versuchen
Es installieren
Ssh-agent aktivieren
C:\Programme\Git\cmd
start-ssh-Agent
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
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.