Ich stoße auf diesen Fehler von:
$ git push heroku master
Warning: Permanently added the RSA host key for IP address '50.19.85.132' to the list of known hosts.
! Your key with fingerprint b7:fd:15:25:02:8e:5f:06:4f:1c:af:f3:f0:c3:c2:65 is not authorized to access bitstarter.
Ich habe versucht, die Schlüssel hinzuzufügen, und ich erhalte die folgende Fehlermeldung:
$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
$ ssh-agent /bin/sh
und$ ssh-add $yourkey
git config --list
, ob Sie eine Einstellung vorgenommen haben.credential.helper
Wenn dies der Fall ist, sollten Sie diese Einstellung entfernen, da der Helfer nicht hilfreich ist.Antworten:
Hast du angefangen
ssh-agent
?Möglicherweise müssen Sie starten,
ssh-agent
bevor Sie denssh-add
Befehl ausführen :Beachten Sie, dass dadurch der Agent für msysgit Bash unter Windows gestartet wird . Wenn Sie eine andere Shell oder ein anderes Betriebssystem verwenden, müssen Sie möglicherweise eine Variante des Befehls verwenden, z. B. die in den anderen Antworten aufgeführten .
Siehe die folgenden Antworten:
Informationen zum automatischen Starten von ssh-agent und zum Arbeiten einer einzelnen Instanz in mehreren Konsolenfenstern finden Sie unter Starten von ssh-agent bei der Anmeldung .
Warum müssen wir
eval
statt nur verwendenssh-agent
?Um herauszufinden, warum, lesen Sie die Antwort von Robin Green .
Öffentliche und private Schlüssel
Außerdem
ssh-add
füge ich bei jeder Verwendung immer private Schlüssel hinzu. Die Datei~/.ssh/id_rsa.pub
sieht aus wie ein öffentlicher Schlüssel. Ich bin mir nicht sicher, ob das funktionieren wird. Hast du eine~/.ssh/id_rsa
datei Wenn Sie es in einem Texteditor öffnen, heißt es dann, dass es sich um einen privaten Schlüssel handelt?quelle
ssh-add
nur einen verschlüsselten privaten Schlüssel auf dem Host-Computer zu entschlüsseln, damit er lokal verwendet werden kann ... er wird niemals an jemanden gesendet . Ich vermute, dass immer nur die öffentlichen Schlüssel über ein Netzwerk gesendet werden. Ist mein Verständnis falsch?eval ssh-agent -s
funktioniert, aberssh-agent
alleine nicht.SSH_AUTH_SOCK
IIRC) verwenden soll. Wenn Sie nur ausführen,ssh-agent
wird der Agent gestartet, aber SSH hat keine Ahnung, wo er zu finden ist.Ich habe die anderen Lösungen ohne Erfolg ausprobiert. Ich habe mehr Nachforschungen angestellt und festgestellt, dass der folgende Befehl funktioniert. Ich benutze Windows 7 und Git Bash .
Weitere Informationen unter: https://coderwall.com/p/rdi_wq
quelle
Der folgende Befehl hat bei mir funktioniert. Ich benutze CentOS.
quelle
ssh-add my.id_rsa
würde an mir scheitern. Aberexec ssh-agent zsh
gab eine Umgebung, in der ichssh-add
ohne Probleme konnte. Und ich bin in meinem Docker-Container :)MsysGit oder Cygwin
Wenn Sie Msysgit oder Cygwin verwenden, finden Sie bei SSH-Agent ein gutes Tutorial in msysgit und cygwin und bash :
Fügen Sie eine Datei mit dem Namen "
.bashrc
Home" hinzu.Öffnen Sie die Datei und fügen Sie sie ein:
Dies setzt voraus, dass sich Ihr Schlüssel am herkömmlichen
~/.ssh/id_rsa
Ort befindet. Wenn dies nicht der Fall ist, geben Sie nach demssh-add
Befehl einen vollständigen Pfad an .Datei hinzufügen oder erstellen
~/.ssh/config
mit dem InhaltIm Original-Tutorial der
ForwardAgent
ParameterYes
, aber es ist ein Tippfehler. Verwenden Sie alle Kleinbuchstaben, sonst werden Fehler angezeigt.Starten Sie Msysgit neu. Sie werden aufgefordert, Ihre Passphrase einmal einzugeben, und das war's (bis Sie die Sitzung beenden oder Ihr SSH-Agent getötet wird).
Mac OS X
Wenn Sie nicht jedes Mal, wenn Sie ein Terminal öffnen, einen neuen SSH-Agenten starten möchten, lesen Sie Schlüsselbund . Ich bin jetzt auf einem Mac, daher habe ich das Tutorial ssh-agent mit zsh & keychain unter Mac OS X verwendet , um es einzurichten, aber ich bin sicher, dass eine Google-Suche viele Informationen für Windows enthält.
Update : Eine bessere Lösung für Mac ist das Hinzufügen Ihres Schlüssels zum Mac OS-Schlüsselbund:
So einfach ist das.
quelle
eval `ssh-agent -s`
das tue, stoppt der Prozess nicht, wenn ich cygwin beende.ps -u $(whoami) | grep ssh-agent &> /dev/null || eval $(ssh-agent)
- sonst wird jedes Mal ein neuer ssh-Agent gestartet. Ich habe meine Maschine von Zeit zu Zeit getötet, als der Benutzer Cronjobs hatte.ForwardAgent yes
ist nicht erforderlich und stellt ein nicht theoretisches Sicherheitsrisiko dar, wenn es für einen nicht vertrauenswürdigen Server festgelegt ist. Der lokale Zugriff auf Ihren Schlüsselagenten sollte unabhängig von dieser Einstellung funktionieren.Es konnte keine Verbindung zu Ihrem Authentifizierungsagenten hergestellt werden
So beheben Sie diesen Fehler:
Bash:
tcsh:
Verwenden
ssh-add
Sie es dann wie gewohnt.Heißer Tipp:
Ich habe immer vergessen, was ich für die obigen ssh-agent-Befehle eingeben soll, also habe ich einen Alias in meiner
.bashrc
Datei wie folgt erstellt:Jetzt anstatt zu verwenden
ssh-agent
, kann ich verwendenssh-agent-cyg
Z.B
Ursprüngliche Quelle des Fixes:
http://cygwin.com/ml/cygwin/2011-10/msg00313.html
quelle
eval
Befehl jedes Mal ausführen, wenn Sie ihn zuvor ausgeführt habenssh-agent
. Ich verwende jetzt einen Alias. In der aktualisierten Antwort erfahren Sie, wie ich das mache.fatal: Could not read from remote repository.
.Ich hatte das gleiche Problem mit Linux, und hier ist, was ich getan habe:
Grundsätzlich startet der Befehl ssh-agent den Agenten, setzt jedoch nicht wirklich die Umgebungsvariablen für die Ausführung. Diese Variablen werden nur an die Shell ausgegeben.
Du brauchst:
und dann ssh-add. Siehe Verbindung zu Ihrem Authentifizierungsagenten konnte nicht hergestellt werden .
quelle
ssh-add und ssh (vorausgesetzt, Sie verwenden die openssh-Implementierungen) erfordern eine Umgebungsvariable, um mit dem ssh-Agenten kommunizieren zu können. Wenn Sie den Agenten in einem anderen Eingabeaufforderungsfenster als dem jetzt verwendeten gestartet haben oder wenn Sie ihn falsch gestartet haben, wird diese Umgebungsvariable weder von ssh-add noch von ssh angezeigt (da die Umgebungsvariable lokal festgelegt ist auf den Befehl festgelegt ist Eingabeaufforderung ist es eingestellt).
Sie sagen nicht, welche Version von ssh Sie verwenden, aber wenn Sie Cygwin verwenden, können Sie dieses Rezept von SSH Agent auf Cygwin verwenden :
Dadurch wird automatisch ein Agent für jedes neue Eingabeaufforderungsfenster gestartet, das Sie öffnen (was nicht optimal ist, wenn Sie mehrere Eingabeaufforderungen in einer Sitzung öffnen, dies sollte jedoch funktionieren).
quelle
eval $(ssh-agent)
und kann für jedes neue Terminalfenster ssh ohne Kennwort verwenden.Lauf
Um mehr Details zu erhalten, können Sie suchen
oder laufe
quelle
ssh-copy-id
auf ubuntu zu verwenden. Unsicher, warum ich den Schlüssel nicht hinzufügen konnte, ohnessh-agent
Bash zu starten.ssh-agent zsh; ssh-add
Versuchen Sie die folgenden Schritte:
1) Öffnen Sie Git Bash und führen Sie Folgendes aus:
cd ~/.ssh
2) Versuchen Sie, den Agenten auszuführen:
eval $(ssh-agent)
3) Im Moment können Sie den folgenden Befehl ausführen:
ssh-add -l
quelle
ps aux | grep ssh
denkill
Befehl und den Befehl in Ricks Antwort, um die Agenten zu töten. Danachssh-add
funktionierte es ohne den Schalter -l (mit -l wurde ein Fehler ausgegeben).eval 'ssh-agent'
Da in Ricks Antwort nicht funktioniert hat, musste icheval $(ssh-agent)
wie in Chechoros Antwort hier verwenden.$(ssh-agent)
ist gleichbedeutend mit`ssh-agent`
aber besser lesbar.Anstatt zu verwenden
$ ssh-agent -s
, habe ich$ eval `ssh-agent -s`
dieses Problem gelöst.Folgendes habe ich Schritt für Schritt ausgeführt (ab Schritt 2 auf GitBash):
C:\user\<username>\.ssh\
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
$ ps aux | grep ssh
$ kill <pids>
$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/id_rsa
quelle
ssh-agent -s
Auswertung neu starten und ältere Schlüssel mit ssh-add ~ / .ssh / id_rsa hinzufügen. Wenn Sie einen neuen SSH-Schlüssel generieren, müssen Sie diesen Schlüssel in all Ihren Diensten wie Github, Bitbucket usw. aktualisieren.ssh-agent -s
" und "ssh-add ~ / .ssh / id_rsa" erneut starte.In Windows 10 habe ich alle hier aufgeführten Antworten ausprobiert, aber keine davon schien zu funktionieren. Tatsächlich geben sie einen Hinweis. Um ein Problem zu lösen, benötigen Sie einfach 3 Befehle. Die Idee dieses Problems ist, dass ssh-add SSH_AUTH_SOCK- und SSH_AGENT_PID-Umgebungsvariablen benötigt, um mit dem aktuellen Ssh-Agent-Sockendateipfad und der PID-Nummer festgelegt zu werden.
Dadurch wird die Ausgabe von ssh-agent in einer Datei gespeichert. Der Inhalt der Textdatei sieht ungefähr so aus:
Kopieren Sie etwas wie "/tmp/ssh-kjmxRb2764/agent.2764" aus der Textdatei und führen Sie den folgenden Befehl direkt in der Konsole aus:
Kopieren Sie so etwas wie "3044" aus der Textdatei und führen Sie den folgenden Befehl direkt in der Konsole aus:
Wenn nun Umgebungsvariablen (SSH_AUTH_SOCK und SSH_AGENT_PID) für die aktuelle Konsolensitzung festgelegt sind, führen Sie Ihren Befehl ssh-add aus, und die Verbindung zum ssh-Agenten wird nicht erneut fehlschlagen.
quelle
set
durchexport
Eine Sache, auf die ich stieß, war, dass
eval
ich mit Cygwin nicht funktionierte. Was für mich funktionierte, warssh-agent ssh-add id_rsa
.Danach stieß ich auf ein Problem, dass mein privater Schlüssel zu offen war, die Lösung, die ich dafür finden konnte (von hier aus ):
ebenso gut wie
endlich konnte ich verwenden:
quelle
eval `ssh-agent`
, mit den Backticks`
umssh-agent
, wie in gezeigt , meine Antwort ? Das hat in Cygwin gut funktioniert. Sie scheinen Recht zu haben, dasssh-agent ssh-add
funktioniert aber auch, zumindest im msysgit Bash. Beachten Sie jedoch, dass diesid_rsa
der Standardschlüssel ist, der verwendet wird, sodass Sie ihn nicht mit angeben müssenssh-agent ssh-add id_rsa
.Um die Antwort von n3o für Windows 7 zu erweitern ...
Mein Problem war in der Tat, dass einige erforderliche Umgebungsvariablen nicht festgelegt wurden, und n3o ist richtig, dass ssh-agent Ihnen sagt, wie diese Umgebungsvariablen festgelegt werden, sie jedoch nicht tatsächlich festlegt.
Da Sie in Windows keine "Auswertung" durchführen können, gehen Sie stattdessen wie folgt vor:
Leiten Sie die Ausgabe von ssh-agent in eine Batchdatei mit um
Verwenden Sie jetzt einen Texteditor wie Notepad, um temp.bat zu bearbeiten. Für jede der ersten beiden Zeilen: - Fügen Sie das Wort "set" und ein Leerzeichen am Zeilenanfang ein. - Löschen Sie das erste Semikolon und alles, was folgt.
Löschen Sie nun die dritte Zeile. Ihre temp.bat sollte ungefähr so aussehen:
Führen Sie temp.bat aus. Dadurch werden die Umgebungsvariablen festgelegt, die für die Funktion von ssh-add erforderlich sind.
quelle
Could not open a connection to your authentication agent.
beim Ausführen von ssh-add in Win10 PowerShell.Ich habe das gerade zum Laufen gebracht. Öffnen Sie Ihre
~/.ssh/config
Datei.Fügen Sie Folgendes hinzu:
Die Seite, die mir den Hinweis gab , SSH für Git einzurichten, sagte, dass die Einrückung einzelner Leerzeichen wichtig ist ... obwohl ich hier eine Konfiguration von Heroku hatte, die diesen Speicherplatz nicht hatte und ordnungsgemäß funktioniert.
quelle
Wenn Sie diese Anweisungen befolgen, ist Ihr Problem gelöst.
Wenn Sie sich auf einem Mac oder Linux befinden, geben Sie Folgendes ein:
Wenn Sie sich auf einem Windows-Computer befinden, geben Sie Folgendes ein:
quelle
Lassen Sie mich eine andere Lösung anbieten. Wenn Sie gerade Git 1.8.2.2 oder so installiert haben und SSH aktivieren möchten, befolgen Sie die gut geschriebenen Anweisungen .
Alles bis zu Schritt 5.6, wo Sie möglicherweise auf einen leichten Haken stoßen. Wenn bereits ein SSH-Agent ausgeführt wird, wird beim Neustart von bash möglicherweise die folgende Fehlermeldung angezeigt
Verwenden Sie in diesem Fall den folgenden Befehl, um festzustellen, ob mehr als ein SSH-Agent-Prozess ausgeführt wird
Wenn Sie mehr als einen SSH-Agent-Dienst sehen, müssen Sie alle diese Prozesse beenden. Verwenden Sie den Befehl kill wie folgt (die PID ist auf Ihrem Computer eindeutig).
Beispiel:
Nachdem Sie alle ssh-agent-Prozesse entfernt haben, führen Sie px aux | aus Geben Sie den Befehl grep ssh erneut ein, um sicherzustellen, dass sie nicht mehr vorhanden sind, und starten Sie dann Bash neu.
Voila, du solltest jetzt so etwas bekommen:
Jetzt können Sie mit Schritt 5.7 und darüber hinaus fortfahren.
quelle
Für Windows-Benutzer stellte ich fest, dass cmd
eval `ssh-agent -s`
nicht funktionierte, aber die Verwendung von git bash war ein Vergnügeneval `ssh-agent -s`; ssh-add KEY_LOCATION
und stellte sicher, dass der Windows-Dienst "OpenSSH Key Management" nicht deaktiviert warquelle
Dadurch wird der SSH-Agent ausgeführt und nur beim ersten Mal authentifiziert , nicht jedes Mal, wenn Sie Ihr Bash-Terminal öffnen. Es kann für jedes Programm verwendet werden, das SSH im Allgemeinen verwendet, einschließlich ssh selbst und scp. Fügen Sie dies einfach hinzu zu
/etc/profile.d/ssh-helper.sh
:quelle
ps -A | grep ssh-agent
oderps h -C ssh-agent
sollte anstelle vonps | grep ssh-agent
echo ssh-auth | bash
fehlschlagen wird.AddKeysToAgent yes
(oder verwenden Sie ihnprompt
) (verwenden Sie ihnHost *
für alle Hosts). Auf diese Weise werden Sie nur dann nach dem SSH-Kennwort gefragt, wenn Sie tatsächlich versuchen, eine Verbindung herzustellen. Andernfalls werden Sie möglicherweise nach einem Kennwort für ein einfachesgit diff
oder gefragtgit status
.$HOME/.ssh
könnte robuster sein als/home/$(whoami)/.ssh
Ich hatte das gleiche Problem
Ubuntu
und die anderen Lösungen haben mir nicht geholfen. Endlich wurde mir klar, was mein Problem war. Ich hatte meinessh
Schlüssel in einem/root/.ssh
Ordner erstellt. Selbst wenn ichssh-add
als Root ausgeführt wurde, konnte es seine Arbeit nicht erledigen und sagte immer wiederIch habe meine öffentlichen und privaten ssh-Schlüssel im
/home/myUsername/
Ordner erstellt und verwendetdann rannte ich
und das Problem wurde auf diese Weise gelöst.
Hinweis: Um auf Ihr Repository zuzugreifen,
git
fügen Sie Ihr Git-Passwort hinzu, wenn Siessh
Schlüssel mit erstellenssh-keygen -t rsa -C "your git email here"
.quelle
Verwenden Sie den Parameter -A, wenn Sie eine Verbindung zum Server herstellen. Beispiel:
von der Manpage:
quelle
Die grundlegende Lösung zum Ausführen
ssh-agent
wird in vielen Antworten beantwortet. Durch mehrmaliges Ausführenssh-agent
(pro geöffnetem Terminal oder pro Remote-Anmeldung) werden jedoch viele Kopien erstellt,ssh-agent
die nicht im Speicher ausgeführt werden. Die Skripte, die vorgeschlagen werden, um dieses Problem zu vermeiden, sind lang und müssen separate Dateien schreiben und / oder kopieren oder zu viele Zeichenfolgen in~/.profile
oder schreiben~/.schrc
. Lassen Sie mich vorschlagen einfache Lösung mit zwei Zeichenfolgen :Für sh , bash usw.:
Für csh , tcsh usw.:
Was ist hier:
ssh-agent
nach Name und aktuellem Benutzerssh-agent
und sichssh-agent
selbst ausführen , wenn kein aktueller Benutzer vorhanden istssh-agent
gefunden wurdeEs ist nicht erforderlich, das erstellte Shell-Skript
~/.ssh-agent.tcsh
oder den~/.ssh-agent.sh
Zugriff eines anderen Benutzers zu schützen, da: Die Kommunikation mitssh-agent
wird zunächst über einen geschützten Socket verarbeitet, auf den ein anderer Benutzer nicht zugreifen kann, und der zweite Benutzer kann denssh-agent
Socket einfach durch Aufzählungsdateien im/tmp/
Verzeichnis finden. Was den Zugang zumssh-agent
Prozess betrifft, so sind es die gleichen Dinge.quelle
Versuche Folgendes:
quelle
Lesen Sie die Antwort von @ cupcake, um Erklärungen zu erhalten. Hier versuche ich nur das Update zu automatisieren.
Wenn Sie das Cygwin-Terminal mit BASH verwenden, fügen Sie der Datei $ HOME / .bashrc Folgendes hinzu. Dies startet ssh-agent nur einmal im ersten Bash-Terminal und fügt die Schlüssel zu ssh-agent hinzu. (Nicht sicher, ob dies unter Linux erforderlich ist)
VERGESSEN SIE NICHT, Ihre korrekten Schlüssel im Befehl "ssh-add" hinzuzufügen.
quelle
Ich hatte dieses Problem, als ich ssh-agent startete, als es bereits lief. Wird verwirrt. Um festzustellen, ob dies der Fall ist, verwenden Sie
um zu sehen, ob dies das gleiche ist, wie Sie es sich vorgestellt haben. In meinem Fall war es anders als das, was ich gerade angefangen habe.
Um weiter zu überprüfen, ob mehr als ein SSH-Agent ausgeführt wird, können Sie Folgendes überprüfen:
quelle
eval $(ssh-agent)
soll jedes Mal ein neuer Agent mit einer anderen PID erstellt werden, obwohl ich mich irren könnte.Ich hatte ein ähnliches Problem, als ich versuchte, dies unter Windows zum Laufen zu bringen, um über ssh eine Verbindung zum Stash herzustellen
Hier ist die Lösung, die für mich funktioniert hat.
Es stellte sich heraus, dass ich Pageant ssh agent auf meiner Windows-Box ausgeführt habe - ich würde überprüfen, was Sie ausführen. Ich vermute, es ist Pageant, da es standardmäßig mit Putty und winScp geliefert wird
Das ssh-add funktioniert mit diesem Agententyp nicht über die Befehlszeile
Sie müssen den privaten Schlüssel über das Fenster der Festzug-Benutzeroberfläche hinzufügen, das Sie erhalten, indem Sie das Festzug-Symbol in der Taskleiste (nach dem Start) doppelt betrachten.
Bevor Sie den Schlüssel zu Pageant hinzufügen, müssen Sie ihn in das PPK-Format konvertieren. Vollständige Anweisungen finden Sie hier. So konvertieren Sie den SSH-Schlüssel in das ppk-Format
Das ist es. Nachdem ich meinen Schlüssel zum Versteck hochgeladen hatte, konnte ich mit SourceTree ein lokales Repo erstellen und die Fernbedienung klonen.
Hoffe das hilft...
quelle
Ich habe den Fehler behoben, indem ich das Stoppen (Beenden) von Git-Prozessen (SSH-Agent) erzwungen, dann Git deinstalliert und Git erneut installiert habe.
quelle
Mit Git Bash unter Win8.1E war meine Auflösung wie folgt:
quelle
/dev/null
? Ihre Antwort macht im Grunde genau das Gleiche wie diese .~/.ssh/id_rsa
der Standardschlüssel ist, sodass Sie ihn nicht angeben müssenssh-add ~/.ssh/id_rsa
, sondern nurssh-add
funktionieren sollten.Wenn Sie Putty verwenden, müssen Sie möglicherweise die Option "Verbindung / SSH / Auth / Agentenweiterleitung zulassen" auf "true" setzen.
quelle
Das hat bei mir funktioniert .
quelle
Für in Windows 10 integrierte Bash habe ich Folgendes zu .bash_profile hinzugefügt:
quelle
$(ssh-agent -s)
, um die Umgebung des Agenten festzulegen.