Ich bin auf Mac Snow Leopard und habe gerade git
installiert.
Ich habe es versucht
git clone [email protected]:cakebook.git
aber das gibt mir diesen Fehler:
Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Was vermisse ich?
Ich habe auch versucht, ssh-keygen
mit keiner Passphase zu tun, aber immer noch den gleichen Fehler.
Der Benutzer hat noch kein öffentliches/privates SSH-Schlüsselpaar erstellt.
Diese Informationen funktionieren in theChaw, können jedoch auf alle anderen Git-Repositorys angewendet werden, die SSH-Pubkey-Authentifizierungen unterstützen. (Siehe gitolite , gitlab oder github zum Beispiel.)
Richten Sie zunächst Ihr eigenes Paar aus öffentlichen und privaten Schlüsseln ein. Dies kann entweder DSA oder RSA verwenden, sodass grundsätzlich jeder von Ihnen eingerichtete Schlüssel funktioniert. Auf den meisten Systemen können Sie ssh-keygen verwenden.
- Zuerst möchten Sie eine CD in Ihr .ssh-Verzeichnis kopieren. Öffne das Terminal und starte:
cd ~/.ssh && ssh-keygen
- Als nächstes müssen Sie dies in Ihre Zwischenablage kopieren.
- Führen Sie unter OS X Folgendes aus:
cat id_rsa.pub | pbcopy
- Führen Sie unter Linux Folgendes aus:
cat id_rsa.pub | xclip
- Führen Sie unter Windows (über Cygwin/Git Bash) Folgendes aus:
cat id_rsa.pub | clip
- Fügen Sie Ihren Schlüssel über die Website zu Ihrem Konto hinzu.
- Schließlich richten Sie Ihre .gitconfig.
git config --global user.name "bob"
git config --global user.email [email protected]
(vergessen Sie nicht, Ihre Befehlszeile neu zu starten, um sicherzustellen, dass die Konfiguration neu geladen wird)Du solltest also gut klonen und auschecken können.
Weitere Informationen finden Sie unter https://help.github.com/articles/generating-ssh-keys (danke an @Lee Whitney) -
Hat der Benutzer zuvor ein öffentliches/privates SSH-Schlüsselpaar erstellt?
eval $(ssh-agent -s)
finden Sie heraus, wo sich die Schlüssel befinden
ssh-add ~/.ssh/id_rsa
Umfangreichere Fehlerbehebungen und sogar automatisierte Fixierungen können mit folgendem durchgeführt werden:
ssh -vT [email protected]
Quelle: https://help.github.com/articles/error-permission-denied-publickey/
Dieser Fehler kann auftreten, wenn Sie auf die SSH-URL (Read/Write) anstelle von Git-Read-Only-URL zugreifen, jedoch keinen Schreibzugriff auf dieses Repo haben.
Manchmal möchten Sie nur Ihr eigenes Repo klonen, z. Bereitstellung auf einem Server In diesem Fall benötigen Sie eigentlich nur READ-ONLY-Zugriff. Da dies jedoch Ihr eigenes Repo ist, zeigt GitHub möglicherweise die SSH-URL an, wenn Sie dies bevorzugen. Wenn sich in diesem Fall der öffentliche Schlüssel Ihres Remote-Hosts nicht in Ihren GitHub-SSH-Schlüsseln befindet, wird Ihr Zugriff verweigert, was erwartet wird.
Ein ähnlicher Fall ist der Fall, wenn Sie versuchen, das Repo einer anderen Person zu klonen, auf das Sie keinen Schreibzugriff mit der SSH-URL haben.
In einem Word wenn nur ein Repo geklont werden soll, verwenden Sie die HTTPS-URL (https://github.com/{user_name}/{project_name}.git
) anstelle der SSH-URL ([email protected]:{user_name}/{project_name}.git
), wodurch eine (unnötige) Überprüfung des öffentlichen Schlüssels vermieden wird.
Update: GitHub zeigt jetzt HTTPS als Standardprotokoll an und dieser Schritt kann möglicherweise den Missbrauch von SSH-URLs reduzieren.
Die github help link hat mir geholfen, dieses Problem zu lösen. Anscheinend wurde der ssh-Schlüssel nicht zum ssh-agent hinzugefügt. Das habe ich am Ende getan.
Befehl 1:
Stellen Sie sicher, dass der ssh-agent aktiviert ist. Der Befehl startet den ssh-agent im Hintergrund:
eval "$(ssh-agent -s)"
Befehl 2:
Fügen Sie Ihren SSH-Schlüssel zum ssh-agent hinzu:
ssh-add ~/.ssh/id_rsa
Ich habe denselben Fehlerbericht.
Behoben, stattdessen HTTP zu verwenden. Da möchte ich nicht "SSH-Schlüssel" für einen Test-PC einstellen.
Beim Klonen URL in HTTP ändern:
git clone https://github.com/USERNAME/REPOSITORY.git
Mein Problem ist etwas anders : Ich habe eine URL gesetzt, wenn Sie ein vorhandenes lokales Repo zu Remote hinzufügen.
git remote add Origin ssh://github.com/USERNAME/REPOSITORY.git
Um dies zu beheben, setzen Sie die URL auf HTTP zurück:
git remote set-url Origin https://github.com/USERNAME/REPOSITORY.git
Übrigens können Sie Ihre URL mit dem Befehl überprüfen:
git remote -v
Origin https://github.com/USERNAME/REPOSITORY.git (fetch)
Origin https://github.com/USERNAME/REPOSITORY.git (Push)
Ich hoffe, das hilft jemandem wie mir. : D
Beachten Sie, dass (zumindest für einige Projekte) ein Github-Konto mit einem SSH-Schlüssel vorhanden sein muss.
Schauen Sie sich die Schlüssel an, die in Ihrem Authentifizierungsagenten aufgeführt sind (ssh-add -l).
(Wenn Sie keinen sehen, fügen Sie einen Ihrer vorhandenen Schlüssel mit ssh-add/path/zu/Ihrem/key hinzu (zB: ssh-add ~/.ssh/id_rsa))
(Wenn Sie keine Schlüssel haben, erstellen Sie zuerst einen. Siehe: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html oder einfach google ssh-keygen)
Um zu überprüfen, ob ein Schlüssel mit Ihrem Github-Konto verknüpft ist:
Gehen Sie zu: https://github.com/settings/ssh
Sie sollten mindestens einen Schlüssel mit einem Hash-Schlüssel sehen, der mit einem der Hashwerte übereinstimmt, die Sie beim Eingeben von ssh-add -l vor einer Minute gesehen haben.
Wenn nicht, fügen Sie einen hinzu und versuchen Sie es erneut.
Das funktioniert für mich:
ssh-add ~/.ssh/id_rsa
Ich hatte eine etwas andere Situation, ich war an einem Remote-Server angemeldet und benutzte git auf dem Server. Als ich jeden git-Befehl ausführte, bekam ich dieselbe Nachricht
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Ich habe das Problem behoben, indem ich die Datei/etc/ssh_config auf meinem Mac geändert habe. von
ForwardAgent no
zu
ForwardAgent yes
Ich hatte mit dem gleichen Problem zu kämpfen, und ich konnte das Repo klonen. Ich habe diese Prozedur für iMac befolgt.
Erster Schritt: Überprüfen, ob wir bereits den öffentlichen SSH-Schlüssel haben.
ls -al ~/.ssh
Ein, um zu prüfen, ob vorhandene SSH-Schlüssel vorhanden sind:Überprüfen Sie die Verzeichnisliste, um festzustellen, ob Sie bereits über einen öffentlichen SSH-Schlüssel verfügen
Wenn Sie nicht finden, fahren Sie mit Schritt 2 fort, andernfalls folgen Sie Schritt 3
Schritt 2: Generieren des öffentlichen SSH-Schlüssels
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Generating public/private rsa key pair
. Wenn Sie zur Eingabe von "Enter a file in which to save the key,"
Aufgefordert werden, drücken Sie die Eingabetaste. Dies akzeptiert den Standardspeicherort der Datei. Wenn es zu Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
auffordert, drücken Sie einfach erneut die Eingabetaste. Geben Sie an der Eingabeaufforderung eine sichere Passphrase ein.Enter passphrase (empty for no passphrase): [Type a passphrase]
Drücken Sie die Eingabetaste, wenn Sie Enter same passphrase again: [Type passphrase again]
nicht möchten. Drücken Sie erneut die EingabetasteDies erzeugt id_rsa.pub
Schritt 3: Hinzufügen Ihres SSH-Schlüssels zum ssh-agent
eval "$(ssh-agent -s)"
$ ssh-add -K ~/.ssh/id_rsa
Kopieren Sie nun den SSH-Schlüssel und fügen Sie ihn Ihrem Github-Konto hinzu
pbcopy < ~/.ssh/id_rsa.pub
Dies kopiert die Datei in Ihre Zwischenablage. Jetzt öffnen Sie Ihr github-Konto. Gehen Sie zu Einstellungen> SSH- und GPG-Schlüssel> Neuer SSH-Schlüssel Geben Sie den Titel ein Fügen Sie den Schlüssel aus der Zwischenablage ein und speichern Sie ihn. Voila, du bist fertig.Ich traf das gleiche Problem, weil ich dachte, der Unterschied zwischenSSHundHTTPSsei
https://github.com/USERNAME/REPOSITORY.git
ssh://github.com/USERNAME/REPOSITORY.git
Also habe ich vonHTTPSnachSSHgewechselt, indem ich einfach https://
in ssh://
änderte und nichts am Ende der URL geändert wurde.
Aber die Wahrheit ist:
https://github.com/USERNAME/REPOSITORY.git
[email protected]:USERNAME/REPOSITORY.git
Was bedeutet, dass ich ssh://github.com/USERNAME/REPOSITORY.git
in [email protected]:USERNAME/REPOSITORY.git
geändert habe, funktioniert es.
Dummer Fehler aber Hoffnung hilft jemandem!
Stellen Sie unter Windows sicher, dass alle Ihre Apps mit HOME übereinstimmen. Msys wird es überraschenderweise NICHT für Sie tun. Ich musste eine Umgebungsvariable festlegen, da ssh und git sich nicht einig waren, wo sich mein .ssh-Verzeichnis befindet.
Jungs, so hat es für mich funktioniert:
1- Terminal öffnen und zum Benutzer gehen [siehe beigefügtes Bild]
2- Öffnen Sie den .ssh-Ordner und stellen Sie sicher, dass er keine Dateien wie id_rsa oder id_rsa.pub enthält. Andernfalls werden die Dateien manchmal nicht richtig geschrieben
3 - git --version [Auf Installation und Version von git prüfen]
4- git config --global user.email "Ihre E-Mail-ID"
5- git config --global user.name "Ihr Name"
6- git config --list [stellen Sie sicher, dass Sie Ihren Namen und Ihre E-Mail-Adresse eingegeben haben]
7-cd ~/.ssh
8- ssh-keygen, fordert zum Speichern der Datei auf, lassen Sie dies zu
9- cat ~/.ssh/id_rsa.pub [Greifen Sie auf Ihren öffentlichen Schlüssel zu und kopieren Sie den Schlüssel in die gerrit-Einstellungen]
Note: Sie sollten den Sudo-Befehl nicht mit Git verwenden. Wenn Sie einen sehr guten Grund haben, müssen Sie Sudo verwenden. Stellen Sie daher sicher, dass Sie es mit jedem Befehl verwenden (wahrscheinlich ist es einfach besser, su zu verwenden, um an diesem Punkt eine Shell als Root zu erhalten). Wenn Sie SSH-Schlüssel ohne Sudo generieren und dann versuchen, einen Befehl wie Sudo git Push zu verwenden, werden Sie nicht dieselben Schlüssel verwenden, die Sie generiert haben
Die grundlegenden GIT-Anweisungen verwiesen nicht auf das SSH-Schlüsselmaterial. Nach einigen der oben genannten Links habe ich eine git-Hilfeseite gefunden, auf der Schritt für Schritt genau erklärt wird, wie dies für verschiedene Betriebssysteme geschieht (der Link erkennt das Betriebssystem und leitet entsprechend um)
http://help.github.com/set-up-git-redirect/
Es führt alles durch, was für GITHub benötigt wird, und enthält detaillierte Erklärungen wie "Warum beim Erstellen eines RSA-Schlüssels eine Passphrase hinzufügen". Ich dachte mir, ich würde es posten, falls es jemand anderem hilft ...
Einer der einfachsten Wege
zum Terminal gehen
git Push <Git Remote path> --all
Befinden Sie sich in einer Unternehmensumgebung ? Ist es möglich, dass sich Ihre Systemvariablen kürzlich geändert haben? Per diese SO - Antwort leben die ssh-Schlüssel bei %HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa.pub
. Wenn sich %HOMEDRIVE%
vor kurzem geändert hat, weiß git nicht, wo er nach Ihrem Schlüssel und damit nach dem gesamten Authentifizierungs-Zeug suchen muss.
Versuchen Sie, ssh -vT [email protected]
auszuführen. Beachten Sie, wo sich der identity file
befindet. Für mich war das nicht auf meinen normalen \Users\MyLogin
, sondern eher auf ein Netzlaufwerk, da die Umgebungsvariablen auf Netzwerkebene geändert wurden.
Die Lösung? Da mein neuer %HOMEDRIVE%
die gleichen Berechtigungen wie meine lokalen Dateien hat, habe ich gerade meinen .ssh-Ordner dorthin verschoben und einen Tag aufgerufen.
Wenn Sie mehr als einen Schlüssel haben, müssen Sie möglicherweise ssh-add private-keyfile
Neben Rufinus 'Antwort lautet die Verknüpfung zum Kopieren Ihres SSH-Schlüssels in die Zwischenablage in Windows
type id_rsa.pub | clip
Refs:
Ich habe dieses Problem gerade beim Einrichten meines aktuellen Projekts erlebt und keine der oben genannten Lösungen funktioniert. Also habe ich versucht, mit dem Befehl ssh -vT [email protected] nachzusehen, was wirklich in der Debug-Liste passiert. Ich stelle fest, dass der Dateiname meines privaten Schlüssels nicht in der Liste enthalten ist. Umbenennen des Dateinamens des privaten Schlüssels in 'id_rsa' erledigen den Job. hoffe das kann helfen.
Es ist ziemlich geradeaus. Geben Sie den folgenden Befehl ein
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Generieren Sie den SSH-Schlüssel. Öffnen Sie die Datei und kopieren Sie den Inhalt. Gehen Sie zur GitHub-Einstellungsseite und klicken Sie auf SSH-Schlüssel. Klicken Sie auf Neuen SSH-Schlüssel hinzufügen und fügen Sie den Inhalt hier ein. Das ist es :) Sie sollten das Problem nicht mehr sehen.
Ich habe diesen Fehler gefunden, weil ich meinem aktuellen Arbeitsverzeichnis 700 Berechtigungen geben musste:
chmod -R 700 /home/ec2-user/
Beim Versuch, ein Makefile auszuführen, wurde ein ähnlicher Permission Denied (publickey) -Fehler angezeigt.
Alternativ zu den oben genannten SSH-Schritten können Sie die native GitHub-Anwendung für Mac installieren.
Klicken Sie auf Download GitHub für Mac unter - https://help.github.com/articles/set-up-git#platform-mac
Sobald Sie das Setup mit Ihrem git hub-Konto abgeschlossen haben (ich habe auch die git hub-Befehlszeilentools installiert, aber unsicher, ob dieser Schritt erforderlich ist oder nicht), erhielt ich eine E-Mail -
[GitHub] Ein neuer öffentlicher Schlüssel wurde zu Ihrem Konto hinzugefügt.
und mein Fehler wurde behoben.
Es hat für mich funktioniert
ssh -i [your id_rsa path] -T [email protected]
In meinem Fall habe ich Ubuntu neu installiert und der Benutzername wurde von vorigen geändert. In diesem Fall unterscheidet sich auch der generierte SSH-Schlüssel vom vorherigen.
Das Problem wurde durch Kopieren des aktuellen öffentlichen SSH-Schlüssels im Repository behoben. Der Schlüssel ist im /home/.ssh/id_rsa.pub
Ihres Benutzers verfügbar.
In meiner MAC habe ich das gelöst mit:
cp ~/.ssh/github_rsa ~/.ssh/id_rsa
Aus irgendeinem Grund stoppte mein Git, um den privaten Schlüssel in der github_rsa
-Datei zu finden. Dies geschah in einem bestimmten Repo. Ich meine, in anderen Repositories arbeitete git normal weiter.
Ich denke es ist ein Fehler.
Ich könnte feststellen, dass dieses Verhalten ssh -vT [email protected]
ausgeführt wird.
Dieser seltsame Fehler war in meinem Fall ein Symptom für gnome-keyring-daemon
Der Schlüssel, für den ein Kennwort erforderlich ist, wurde falsch benannt.
Ich folge den hier beschriebenen Schritten und gebe das Passwort über das Terminal ein. Der Fehler, auch bekannt als die verwirrende Benutzeroberfläche, wurde behoben. Siehe: https://askubuntu.com/questions/3045/how-to-disable-gnome-keyring
Es hat für mich funktioniert.
Ihr öffentlicher Schlüssel wird in der Datei id_rsa.pub; gespeichert und ist der Schlüssel, den Sie in Ihr Konto hochladen. Sie können diesen Schlüssel in der Zwischenablage speichern, indem Sie Folgendes ausführen:
pbcopy <~/.ssh/id_rsa.pub
Ich habe diese Fehlermeldung erhalten, weil ich die SSH-Schlüssel mit der falschen E-Mail generiert habe. Ich konnte mich mit ssh verbinden, aber nicht mit git. Die Lösung bestand darin, die Schlüssel mithilfe der Haupt-E-Mail-Adresse meines Github-Kontos zu regenerieren.
Ich habe den gleichen Fehler bekommen. Mein Problem war das Mischen in Sudo.
Ich konnte das Verzeichnis, in das ich geklont wurde, nicht automatisch erstellen, ohne den Befehl git clone mit Sudo zu starten. Wenn ich das tat, wurden meine SSH-Schlüssel jedoch nicht richtig referenziert.
Um dies zu beheben, habe ich Berechtigungen über chmod für das übergeordnete Verzeichnis gesetzt, das ich meinen Klon enthalten wollte, damit ich darauf schreiben kann. Dann lief ich git clone OHNE ein Sudo-Präfix. Es hat dann funktioniert! Ich habe die Berechtigungen danach wieder geändert. Erledigt.
Die einfachste Lösung dafür, wenn Sie versuchen, zu einem Repository mit einem anderen Benutzernamen zu pushen, lautet:
git remote set-url Origin https://[email protected]/USERNAME/PROJECTNAME.git
Ich konnte dieses Problem mit den folgenden Schritten in meinem Ubuntu-System lösen. Da ich mit passwortlosen SSH für das System experimentierte.
Sudo vi/etc/ssh/sshd_config
1) Im Folgenden kommentiert: # Ändern auf Nein, um die Klartextpasswörter im Tunnel zu deaktivieren #PasswordAuthentication ja PasswordAuthentication no ----> hat dies kommentiert.
2) Dann wurde der sshd-Daemon wie folgt neu gestartet.
dienst sshd neu starten
Schritte für Mac:
Zunächst empfehle ich einige Standard-Dinge zu überprüfen, wie:
service ssh restart
Es war genug für mich.
$ cd ~
$ cd .ssh
$ chmod 400 id_rsa
Verwenden Sie den ssh-Link von Github, aber stellen Sie sicher, dass Sie ihn nicht mit ssh anhängen. Verwenden Sie einfach die Registerkarte ssh auf git hub, um Ihr Repo zu klonen.
Lassen Sie mich auch meine Erfahrungen teilen,
Ich habe versucht, ein Projekt aus dem Gerrit Repo zu klonen, in dem ich meine öffentlichen Schlüssel in den Kontoeinstellungen erhalten habe.
Beim ersten Versuch, git clone
zu erstellen, wurde folgende Fehlermeldung ausgegeben:
Unable to negotiate with XX.XX.XX.XX port XXX: no matching key exchange
method found. Their offer: diffie-hellman-group1-sha1
Ich habe herausgefunden, dass ich die SSH-Option -oKexAlgorithms=+diffie-hellman-group1-sha1
irgendwie an git clone
übergeben muss.
Hoffentlich hat die Umgebungsvariable GIT_SSH_COMMAND
die Aufgabe erfüllt:
export GIT_SSH_COMMAND="ssh -oKexAlgorithms=+diffie-hellman-group1-sha1"
Aber git clone
hat immer noch nicht funktioniert .. Jetzt wirft es das (auf das Thema):
Permission denied (publickey).
Ich habe bereits SSH-Schlüssel bekommen und wollte sie nicht neu generieren. Ich habe die einfache SSH-Verbindung zum Host überprüft und es war in Ordnung:
**** Welcome to Gerrit Code Review ****
Hi XXXXX, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://[email protected]:xxx/REPOSITORY_NAME.git
Ich war ein bisschen verwirrt. Ich habe erneut gestartet und das Debugging für SSH über die Option -vvv
aktiviert. Und ich habe folgendes gesehen:
debug1: read_passphrase: can't open /dev/tty: No such device or address
Möglicherweise war dies ein Overhead für die Variable GIT_SSH_COMMAND
env - mein Schlüssel wurde mit einer Passphrase gesichert (und ich habe sie eingegeben, als ich die Anmeldung beim git repo-Host überprüft habe).
Also beschloss ich, die Phasphrase dann loszuwerden. Ein einfacher Befehl hat mir geholfen:
ssh-keygen -p
Dann habe ich meine Passphrase für die "alte Passphrase" eingegeben und einfach gedrückt ENTER zweimal auf dem "neuen Passwort", um es leer zu lassen, d. h. ohne Passwort, und um meine Wahl zu bestätigen.
Danach habe ich das frisch geklonte Repo auf meiner lokalen Festplatte bekommen.
Führen Sie das Terminal als Admin aus.
Wenn das Terminal Ihre .ssh-Datei nicht sehen kann, wird diese Fehlermeldung ausgegeben.