GitHub: Berechtigung verweigert (publickey). tödlich: Das entfernte Ende legte unerwartet auf


197

Ich habe diese Anweisungen unten befolgt, um ein Projekt hochzuladen.

Globales Setup:

 Download and install Git
  git config --global user.name "Your Name"
  git config --global user.email tirenga@gmail.com
  Add your public key


Next steps:

  mkdir tirengarfio
  cd tirengarfio
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:tirenga/tirenga.git
  git push origin master

Aber ich bekomme diesen Fehler:

Berechtigung verweigert (publickey). tödlich: Das entfernte Ende legte unerwartet auf

Antworten:


24

Für mich war das Problem die Ausführung des Klons über Sudo.

Wenn Sie in ein Verzeichnis klonen, in dem Sie über Benutzerberechtigungen verfügen (/ home / user / git), funktioniert dies einwandfrei.

(Erläuterung: Das Ausführen eines Befehls als Superuser funktioniert nicht mit demselben öffentlichen Schlüssel wie das Ausführen eines Befehls als Benutzer. Daher hat Github die Verbindung abgelehnt.)

Für diese Lösung muss bereits ein SSH-Schlüssel eingerichtet sein: https://help.github.com/articles/generating-ssh-keys


1
Diese Lösung scheint sehr nahe an dem zu sein, was bereits von learner_19
Erik

125

Ich musste meinen öffentlichen Schlüssel zu Github hinzufügen. https://help.github.com/articles/generating-ssh-keys


3
Wenn Sie einen Linux-Computer ausführen, kann das Kopieren des Inhalts der Datei id_rsa.pub schwierig sein, wenn Sie Emacs oder Nano verwenden. Versuchen Sie, mit einem Texteditor zu kopieren (Notepad, TextEdit oder gedit reichen völlig aus). Wenn Sie keine davon haben, können Sie vim verwenden.
Gokul NK

4
@GokulNK Die andere Alternative ist die Verwendung von xclip, wie auf der Seite empfohlen.
w4etwetewtwet

7
cat ~/.ssh/id_rsa.pubkönnte eine Option sein? : p
Torr

Sie können es pbcopy < ~/.ssh/id_rsa.pubin OS X verwenden und es dann ( cmd+v) in die Github-Seite einfügen.
user3648895

28

Ja, es ist ein Problem mit dem öffentlichen Schlüssel. Ich bin ein Windows- Benutzer und die folgende Seite hilft mir, dieses Problem zu beheben.

http://help.github.com/win-set-up-git/

Genauer gesagt sollte dieser Link hilfreich sein

https://help.github.com/articles/error-permission-denied-publickey


57
Während dies theoretisch die Frage beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Lix

28

Nachdem Sie das RSA-Schlüsselpaar erstellt haben, müssen Sie es wie folgt zu SSH hinzufügen:

ssh-add ~/.ssh/id_rsa

oder wo immer Sie Ihr rsa-Schlüsselpaar erstellt haben.


Lebensretter! Sie treffen den Nagel auf den Kopf. Vielen Dank
Tash Pemhiwa

Einverstanden ist es wichtig, zuerst zu überprüfen, ob ssh-agent ausgeführt wird (in der GitHub-Dokumentation ist dies möglich) und ob der Schlüssel in seinem Schlüsselbund hinzugefügt wird. Etwas anderes, das es wert ist, überprüft zu werden, da es möglicherweise verhindert, dass der Schlüssel verwendet wird, selbst wenn er sich im Schlüsselbund des SSH-Agenten befindet, ist der richtige Zugriffsmodus für den privaten Schlüssel: Er sollte im chmod 600 ~/.ssh/id_rsaGrunde genommen 0600 sein .
Chikamichi

18

Geben Sie den folgenden Befehl mit Ihrem Benutzernamen und Repository-Namen ein:

git clone https://github.com/{user name}/{repo name}

in Ubuntu funktioniert das perfekt.


Ich denke, das https-Protokoll wird benötigt, um eine sichere Verbindung zu haben. Deshalb funktioniert es. Git @ github .. ist NICHT sicher für die Maschine.
Timo

16

Ich habe nach langer Zeit in Tutorials eine Lösung gefunden.

Ich folgte dem Github-Tutorial unter diesem Link -> https://help.github.com/articles/error-permission-denied-publickey und konnte mich in jedem Schritt verbinden. Aber als ich versuchte, push -u origin master zu git, bekam ich diesen Fehler:

Berechtigung verweigert (publickey). fatal: Konnte nicht aus dem Remote-Repository lesen.

Bitte stellen Sie sicher, dass Sie die richtigen Zugriffsrechte haben

So habe ich es behoben !! Gehen Sie mit dem Terminal in das Projektverzeichnis und checken Sie es aus

$git remote -v

Sie werden so etwas bekommen:

origin  ssh://git@github.com/yourGithubUserName/yourRepo.git (fetch)
origin  ssh://git@github.com/yourGithubUserName/yourRepo.git (push)

Wenn Sie etwas anderes als git@github.com verwenden , öffnen Sie die Konfigurationsdatei im git-Verzeichnis, indem Sie den folgenden Befehl eingeben:

vi .git/config

Und konfigurieren Sie die Leitung

[remote "origin"]

url = ssh://git@github.com/yourGithubUserName/yourRepo.git

fetch = +refs/heads/*:refs/remotes/origin/

Für mich hat es tatsächlich funktioniert, indem git@github.com durch <myusername> @ github.com ersetzt wurde
Eduard Feicho

Der Befehl "git remote -v" war noch keiner, den ich zuvor gesehen hatte, und er erwies sich als der Schlüssel zum Verständnis, warum eines meiner Repos funktionierte, während das andere "Berechtigung verweigert (öffentlicher Schlüssel)" zurückgab, als ich habe versucht, "git ls-remote" auszuführen. Sehr hilfreich. Vielen Dank.
Kevin

6

In meinem Fall musste ich den öffentlichen Schlüssel für einen anderen Benutzer einrichten, da ich bereits einen für meinen Hauptbenutzer hatte. Nachdem ich die Benutzer gewechselt und die Befehle im obigen Link ausgeführt hatte, konnte ich das Setup für meinen Testserver problemlos durchführen.


Ähnliches Problem - Ich wurde als root angemeldet (und habe dies übersehen) und nicht als der tatsächliche Benutzer, der mit SSH eingerichtet wurde. Ich konnte mich nicht dazu verpflichten, für irgendetwas zu arbeiten. Zurück zum richtigen vom Benutzer gelösten Problem!
Richard Hollis

1
Definitiv fehlende Erklärung, wie das Update tatsächlich durchgeführt werden soll.
Richard

Ich sollte es nicht buchstabieren müssen, das ist für dich, Richard! Ich habe mein Nicht-Root-Konto verwendet. Ich musste den Befehl über die Github-Hilfe-URL ( help.github.com/articles/generating-ssh-keys#platform-linux ) mit dem Präfix sudo ausführen .
Dan Power

5

Ich hatte dieses Problem, aber keine der oben genannten Lösungen hat funktioniert. Ich konnte klonen und holen, aber nicht pushen. Schließlich stellte ich fest, dass das Problem urlin meinem lag .git/config, es sollte sein:

git@github.com:<username>/<project>

(nicht ssh://github.com/<username>/<project>.gitoder https://github.com/<username>/<project>.git).


2
Für eine SSH-Verbindung ist der git@Teil die Magie. Funktioniert also ssh://git@github.com/username/project.gitauch.
Bischof

.git ist wirklich wichtig. Diese Lösung funktioniert perfekt.
Onur Göker

5

Da keine der Antworten hier für mich funktioniert hat, habe ich endlich mein Problem mit der Verbindung zu Bitbucket (oder Github, in diesem Fall egal) mit ssh -vT git@bitbucket.org aufgespürt.

In meinem Fall war der Fehler auf die Verwendung eines DSA-Schlüssels anstelle von RSA zurückzuführen, und anscheinend lässt mein SSH-Client dies nicht mehr zu.

debug1: Überspringen des ssh-dss-Schlüssels /c/Users/USER/.ssh/id_dsa für nicht in PubkeyAcceptedKeyTypes

Die Lösung bestand darin, dies zu .ssh / config hinzuzufügen:

Host *
    PubkeyAcceptedKeyTypes +ssh-dss

Dadurch wird der Schlüsseltyp ssh-dss elegant an alle vorhandenen akzeptierten öffentlichen Schlüsseltypen angehängt, und nachdem dies geschehen ist, kann git nun problemlos in Bitbucket ssh.


Dies war die Lösung für mich auf einem instabilen Debian-Computer im Dezember 2015. Ich habe sie auf "Host bitbucket.org" beschränkt, da ich bereits einen Eintrag dafür hatte, um meine Identitätsauswahl zu erzwingen.
Bitmusher

3

Mein Problem war, dass ich versuchte, meinem SSH-Schlüssel bei jeder Eingabe auf meinem Mac-Terminal einen SPEZIFISCHEN NAMEN zu geben ssh-keygen.

Ich habe das Problem gelöst, indem ich nur den Namen belassen habe, den "ssh-keygen" generiert = id_rsa. Am Ende befinden sich 2 Schlüssel in Ihrem .ssh-Ordner auf einem Mac, id_rsader Ihr privater Schlüssel ist, und der id_rsa.pub, der Ihr öffentlicher Schlüssel ist. Dann habe ich den Code kopiert und id_rsa.pubin meinen GitHub-Kontoeinstellungen gespeichert , und das wars. Problem gelöst.


Auch für mich. Wenn Sie den Namen leer lassen, wurde das Problem behoben. Vielen Dank.
Berk

Mann, du hast meinen Tag gemacht! 2 Wochen mit Konsole wegen bestimmter Schlüsselnamen! Vielen Dank!
Eilas

Ich bin froh, dass es geholfen hat! @eilas
paopao

Der Grund , dies funktioniert , ist , weil auf den meisten Systemen der Standard privaten Schlüssel ( ~/.ssh/id_rsa, ~/.ssh/id_dsaund ~/.ssh/identity) mit dem SSH - Authentifizierungsagenten automatisch hinzugefügt.
maffo


2

Das Hinzufügen eines öffentlichen Schlüssels ist die Lösung. Zum Generieren von SSH-Schlüsseln: https://help.github.com/articles/generating-ssh-keys enthält schrittweise Anweisungen.

Das Problem kann jedoch bestehen bleiben, wenn der Schlüssel nicht ordnungsgemäß generiert wird. Ich fand dies auch ein nützlicher Link: https://help.github.com/articles/error-permission-denied-publickey

In meinem Fall bestand das Problem darin, dass ich den SSH-Schlüssel ohne Verwendung von sudo generierte, aber bei Verwendung von git-Befehlen musste ich sudo verwenden. Dieser Kommentar im obigen Link "Wenn Sie SSH-Schlüssel ohne sudo generieren, verwenden Sie den von Ihnen generierten SSH-Schlüssel nicht, wenn Sie versuchen, einen Befehl wie sudo git push zu verwenden." half mir.

Die Lösung war also, dass ich sudo sowohl mit Tastengenerierungsbefehlen als auch mit Git-Befehlen verwenden musste. Oder für andere, wenn sie nirgendwo Sudo benötigen, verwenden Sie es in keinem der beiden Schritte. (Schlüsselgenerierungs- und Git-Befehle).


1

Beim Ausführen von SSH oder Git Clone unter Windows trat ein ähnliches Problem auf. Folgende Erkenntnisse helfen, mein Problem zu lösen:

  • Wenn Sie "rhc setup" oder andere ssh-Methoden ausführen, um den ssh-Schlüssel zu generieren, wird die private Schlüsseldatei id_rsa im Ordner .ssh in Ihrem Basisordner erstellt. Der Standardwert ist C: \ User \ UserID
  • Git für Windows hat einen eigenen .ssh-Ordner im Installationsverzeichnis. Wenn Sie git / ssh ausführen, wird in diesem Ordner nach der privaten Schlüsseldatei id_rsa gesucht
  • Das Problem wurde behoben, indem id_rsa aus dem .ssh-Ordner des Basisordners in den .ssh-Ordner im Git-Installationsverzeichnis kopiert wurde

Ich denke auch, dass es eine Möglichkeit gibt, git anzuweisen, den Standardordner .ssh im Basisordner zu verwenden, aber noch herauszufinden, wie.


1

Bei mir hat es so funktioniert:

In GitHub habe ich den sshLink in geändert httpsund dann die folgenden Befehle gegeben:

$ git init
$ git remote add origin https:...
$ git add .
$ git commit -m "first commit"
$ git push origin master

0

Verwenden Sie Ubuntu im Windows Store

Windows-Subsystem für Linux

Ihr Git-Push funktioniert über verschiedene Konten hinweg.


0

Wenn Sie einen Linux-Computer verwenden, überprüfen Sie Folgendes:

  • Haben Sie Openssh installiert?
  • Wenn Sie dies tun, haben Sie einen vorhandenen öffentlichen Schlüssel, andernfalls müssen Sie einen generieren.
  • ist Ihr öffentlicher Schlüssel, der Ihrem Github-Konto hinzugefügt wurde.

Das Generieren neuer SSH-Schlüssel und das Hinzufügen zu meinem Github-Konto löste mein Problem. Auf dieser Seite finden Sie weitere Informationen. GitHelp .


0

Sie können versuchen, Ihre Typverbindung so zu ändern, dass sie von ssh zu https verzweigt.

  1. nano project_path/.git/config
  2. Ersetzen git@github.com:username/repository.gitdurchhttps://username@github.com/username/repository_name.git
  3. Datei speichern ctrl+o

Danach können Sie es git pullohne publickey versuchen



-1

Eine schnelle Möglichkeit, dies zu beheben, wenn Sie einen Mac verwenden, besteht darin, sich von der OSX-App abzumelden und sich erneut anzumelden.


-1

Mein Problem war, dass es mit einer Passphrase auf meinem privaten Schlüssel nicht funktionierte.

Hoffe das hilft jemandem.



-3

Ich habe die genannten Lösungen ausprobiert, bin aber immer noch gescheitert. Ich fand die Lösung , die für mich schließlich arbeitet hier - Entfernen Sie dann erneut Hinzufügen der Remote - Verbindung


-4

Ich hatte das gleiche Problem unter Windows. Ich wechselte von SSH zu HTTPS und führte einen Git PUSH aus.

git push -u origin master
Username for 'https://github.com': <Github login email>
Password for <Github login>: xxx

Erfolgreich! hoffe das hilft.


Dies kann zwar eine Problemumgehung sein, löst jedoch nicht das ursprüngliche Problem.
maffo
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.