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 [email protected]
  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 [email protected]:tirenga/tirenga.git
  git push origin master

Aber ich bekomme diesen Fehler:

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

ziiweb
quelle

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

Smundo
quelle
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

ziiweb
quelle
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

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.

Sergio Viera
quelle
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.

rahul_pratap
quelle
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://[email protected]/yourGithubUserName/yourRepo.git (fetch)
origin  ssh://[email protected]/yourGithubUserName/yourRepo.git (push)

Wenn Sie etwas anderes als [email protected] 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://[email protected]/yourGithubUserName/yourRepo.git

fetch = +refs/heads/*:refs/remotes/origin/
rafaeljuzo
quelle
Für mich hat es tatsächlich funktioniert, indem [email protected] 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.

Dan Power
quelle
Ä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:

[email protected]:<username>/<project>

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

eold
quelle
2
Für eine SSH-Verbindung ist der git@Teil die Magie. Funktioniert also ssh://[email protected]/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 [email protected] 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.

Artem Russakovskii
quelle
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.

Paopao
quelle
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).

learner_19
quelle
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.

gkl
quelle
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
Naiguel Entwickler
quelle
0

Verwenden Sie Ubuntu im Windows Store

Windows-Subsystem für Linux

Ihr Git-Push funktioniert über verschiedene Konten hinweg.

MayurKubavat
quelle
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 .

Sparsh Juneja
quelle
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 [email protected]:username/repository.gitdurchhttps://[email protected]/username/repository_name.git
  3. Datei speichern ctrl+o

Danach können Sie es git pullohne publickey versuchen

Maxim Niko
quelle
-1

Sie müssen SSH-Schlüssel einrichten.

Diese GitHub-Seite erklärt, wie Schlüssel generiert werden.

Wenn Sie einen vorhandenen Schlüssel haben, kopieren Sie ihn $HOME/.ssh/id_rsa.pubund fügen Sie ihn in die GitHub SSH-Einstellungsseite ein .

Richard
quelle
-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.

Brandonscript
quelle
-1

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

Hoffe das hilft jemandem.

Siebenschläfer
quelle
-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

yjsa
quelle
-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.

erukumk
quelle
Dies kann zwar eine Problemumgehung sein, löst jedoch nicht das ursprüngliche Problem.
maffo