it-swarm.com.de

Es konnte keine Verbindung zu Ihrem Authentifizierungsagenten hergestellt werden

Ich stoße auf folgenden Fehler:

$ 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 erhalte den folgenden Fehler:

$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
1418
Danny Dai Smith

Hast du ssh-agent gestartet?

Möglicherweise müssen Sie ssh-agent starten, bevor Sie den Befehl ssh-add ausführen:

eval `ssh-agent -s`
ssh-add

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 andere Antworten aufgeführten.

Siehe die folgenden Antworten:

  1. ssh-add beschwert sich: Verbindung zu Ihrem Authentifizierungsagenten konnte nicht hergestellt werden
  2. Git Push benötigt Benutzername und Passwort (enthält detaillierte Anweisungen zur Verwendung von ssh-agent)
  3. Wie führe ich den (git/ssh) -Authentifizierungsagenten aus? .
  4. Verbindung zu Ihrem Authentifizierungsagenten konnte nicht hergestellt werden

Informationen zum automatischen Starten von ssh-agent und zum Ermöglichen der Arbeit einer einzelnen Instanz in mehreren Konsolenfenstern finden Sie unter Starten von ssh-agent beim Anmelden .

Warum müssen wir eval anstelle von ssh-agent verwenden?

Um herauszufinden, warum, siehe Robin Green's answer .

Öffentliche vs Private Keys

Außerdem füge ich immer private Schlüssel hinzu, wenn ich ssh-add verwende. Die Datei ~/.ssh/id_rsa.pub sieht aus wie ein öffentlicher Schlüssel. Ich bin mir nicht sicher, ob das funktionieren wird. Haben Sie eine ~/.ssh/id_rsa -Datei? Wenn Sie es in einem Texteditor öffnen, handelt es sich dann um einen privaten Schlüssel?

2142
user456814

Ich habe die anderen Lösungen ohne Erfolg ausprobiert. Ich habe weitere Nachforschungen angestellt und festgestellt, dass der folgende Befehl funktioniert. Ich benutze Windows 7 und Git Bash .

eval $(ssh-agent)

Weitere Informationen finden Sie unter: https://coderwall.com/p/rdi_wq

498
Victor Alves

Der folgende Befehl hat bei mir funktioniert. Ich benutze CentOS.

exec ssh-agent bash
246
mianjee

MsysGit oder Cygwin

Wenn Sie Msysgit oder Cygwin verwenden, finden Sie ein gutes Tutorial unter SSH-Agent in msysgit und cygwin und bash :

  1. Fügen Sie Ihrem privaten Ordner eine Datei mit dem Namen .bashrc hinzu.

  2. Öffne die Datei und füge ein:

    #!/bin/bash
    eval `ssh-agent -s`
    ssh-add
    
  3. Dies setzt voraus, dass sich Ihr Schlüssel an der herkömmlichen Position ~/.ssh/id_rsa befindet. Ist dies nicht der Fall, geben Sie nach dem Befehl ssh-add einen vollständigen Pfad an.

  4. Fügen Sie die Datei ~/.ssh/config mit dem Inhalt hinzu oder erstellen Sie sie

    ForwardAgent yes
    

    Im Original-Tutorial ist der Parameter ForwardAgentYes, aber es ist ein Tippfehler. Verwenden Sie nur Kleinbuchstaben, da sonst Fehler auftreten.

  5. Starten Sie Msysgit neu. Sie werden aufgefordert, Ihre Passphrase einmal einzugeben, und das wars (bis Sie die Sitzung beenden oder Ihr SSH-Agent getötet wird).

Mac OS X

Wenn Sie nicht bei jedem Öffnen eines Terminals einen neuen ssh-agent starten möchten, lesen Sie Keychain . Ich bin jetzt auf einem Mac, also habe ich das Tutorial ssh-agent mit zsh & keychain unter Mac OS X verwendet, um es einzurichten, aber ich Ich bin mir 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:

ssh-add -K ~/.ssh/id_rsa

So einfach ist das.

202
RobW

Es konnte keine Verbindung zu Ihrem Authentifizierungsagenten hergestellt werden

So beheben Sie diesen Fehler:

bash:

$ eval `ssh-agent -s`

tcsh:

$ eval `ssh-agent -c`

Verwenden Sie dann ssh-add wie gewohnt.


Hot Tip:

Ich habe immer vergessen, was ich für die obigen ssh-agent-Befehle eingeben soll, und so habe ich in meiner .bashrc -Datei einen Alias ​​erstellt:

alias ssh-agent-cyg='eval `ssh-agent -s`'

Anstatt jetzt ssh-agent zu verwenden, kann ich ssh-agent-cyg verwenden.

Z.B.

$ ssh-agent-cyg
SSH_AUTH_SOCK=/tmp/ssh-n16KsxjuTMiM/agent.32394; export SSH_AUTH_SOCK;
SSH_AGENT_PID=32395; export SSH_AGENT_PID;
echo Agent pid 32395;
$ ssh-add ~/.ssh/my_pk

Ursprüngliche Fixquelle:

http://cygwin.com/ml/cygwin/2011-10/msg00313.html

193
Chris Snow

Ich hatte das gleiche Problem mit Linux, und hier ist, was ich getan habe:

Grundsätzlich startet der Befehl ssh-agent den Agenten, legt jedoch nicht wirklich die Umgebungsvariablen für die Ausführung fest. Diese Variablen werden nur an die Shell ausgegeben.

Du musst:

eval `ssh-agent`

und dann ssh-add ausführen. Siehe Verbindung zu Ihrem Authentifizierungsagenten konnte nicht hergestellt werden.

114
n3o

ssh-add und ssh (vorausgesetzt, Sie verwenden die openssh-Implementierungen) erfordern eine Umgebungsvariable, um zu wissen, wie man mit dem ssh-Agenten kommuniziert. Wenn Sie den Agenten in einem anderen Eingabeaufforderungsfenster gestartet haben als dem, das Sie gerade verwenden, oder wenn Sie ihn falsch gestartet haben, sehen weder ssh-add noch ssh diesen Umgebungsvariablensatz (da die Umgebungsvariable gesetzt ist lokal zu der Eingabeaufforderung, in der es gesetzt ist).

Sie sagen nicht, welche Version von ssh Sie verwenden, aber wenn Sie Cygwins verwenden, können Sie dieses Rezept von SSH Agent auf Cygwin verwenden =:

# Add to your Bash config file
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
    eval `$SSHAGENT $SSHAGENTARGS`
    trap "kill $SSH_AGENT_PID" 0
fi

Dadurch wird automatisch ein Agent für jedes neue Eingabeaufforderungsfenster gestartet, das Sie öffnen (was suboptimal ist, wenn Sie mehrere Eingabeaufforderungen in einer Sitzung öffnen, aber zumindest funktionieren sollte).

108
Robin Green

Versuchen Sie die folgenden Schritte:

1) Öffne Git Bash und starte: cd ~/.ssh

2) Versuchen Sie, den Agenten auszuführen: eval $(ssh-agent)

3) Jetzt können Sie den folgenden Befehl ausführen: ssh-add -l

95
ChechoroArtem

Anstatt $ ssh-agent -s zu verwenden, habe ich $ eval `ssh-agent -s` verwendet, um dieses Problem zu lösen.

Folgendes habe ich Schritt für Schritt ausgeführt (ab Schritt 2 auf GitBash):

  1. Bereinigt meinen .ssh-Ordner unter C:\user\<username>\.ssh\
  2. Generierte einen neuen SSH-Schlüssel
    $ ssh-keygen -t rsa -b 4096 -C "[email protected]"
  3. Überprüfen Sie, ob bereits eine Prozess-ID (SSH-Agent) ausgeführt wird.
    $ ps aux | grep ssh
  4. (Optional) Wenn Sie in Schritt 3 eine gefunden haben, töten Sie diese
    $ kill <pids>
  5. Startete den ssh-Agenten
    $ eval `ssh-agent -s`
  6. Der in Schritt 2 generierte SSH-Schlüssel wurde zum SSH-Agenten hinzugefügt
    $ ssh-add ~/.ssh/id_rsa
77
vinsinraw

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 die Umgebungsvariablen SSH_AUTH_SOCK und SSH_AGENT_PID benötigt, die mit dem aktuellen Pfad der ssh-agent-Sock-Datei und der PID-Nummer festgelegt werden.

ssh-agent -s > temp.txt

Dadurch wird die Ausgabe von ssh-agent in der Datei gespeichert. Der Inhalt der Textdatei sieht ungefähr so ​​aus:

SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3044; export SSH_AGENT_PID;
echo Agent pid 3044;

Kopieren Sie etwas wie "/tmp/ssh-kjmxRb2764/agent.2764" aus der Textdatei und führen Sie den folgenden Befehl direkt in der Konsole aus:

set SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764

Kopieren Sie etwas wie "3044" aus der Textdatei und führen Sie den folgenden Befehl direkt in der Konsole aus:

set SSH_AGENT_PID=3044

Wenn jetzt Umgebungsvariablen (SSH_AUTH_SOCK und SSH_AGENT_PID) für die aktuelle Konsolensitzung festgelegt sind, führen Sie den Befehl ssh-add aus, und die Verbindung zum ssh-Agenten wird nicht erneut fehlschlagen.

53
BIOHAZARD

Lauf

ssh-agent bash
ssh-add

Um mehr Details zu erhalten, können Sie suchen

ssh-agent

oder laufe

man ssh-agent
42
bp zhang

Eine Sache, auf die ich gestoßen bin, war, dass eval bei mir mit Cygwin nicht funktioniert hat, was bei mir funktioniert hat, war ssh-agent ssh-add id_rsa.

Danach bin ich auf ein Problem gestoßen, bei dem mein privater Schlüssel zu offen war. Die Lösung, die ich dafür gefunden habe (von hier ):

chgrp Users id_rsa

ebenso gut wie

chmod 600 id_rsa

endlich konnte ich benutzen:

ssh-agent ssh-add id_rsa
29
Vnge

Um die Antwort von n3o für Windows 7 zu erläutern ...

Mein Problem war in der Tat, dass einige erforderliche Umgebungsvariablen nicht gesetzt wurden und n3o richtig ist, dass ssh-agent Ihnen sagt, wie man diese Umgebungsvariablen setzt, aber sie nicht wirklich setzt.

Da Sie unter Windows nicht "eval" ausführen können, müssen Sie stattdessen folgende Schritte ausführen:

Leiten Sie die Ausgabe von ssh-agent mit in eine Batch-Datei um

ssh-agent > temp.bat

Verwenden Sie jetzt einen Texteditor wie Editor, 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. Ihr temp.bat sollte ungefähr so ​​aussehen:

set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608

Führen Sie temp.bat aus. Dadurch werden die Umgebungsvariablen festgelegt, die erforderlich sind, damit ssh-add funktioniert.

27
Steve Saporta

Ich habe gerade das zum Laufen gebracht. Öffnen Sie Ihre ~/.ssh/config -Datei.

Fügen Sie Folgendes hinzu:

Host github.com
 IdentityFile ~/.ssh/github_rsa

Die Seite, die mir den Hinweis gab SSH für Git einrichten sagte, dass der Einzug mit einem Leerzeichen wichtig ist ... obwohl ich hier eine Konfiguration von Heroku hatte, die diesen Leerzeichen nicht hatte und richtig funktioniert.

17
Paul Becotte

Wenn Sie diese Anweisungen befolgen, ist Ihr Problem gelöst.

Wenn Sie sich auf einem Mac- oder Linux-Computer befinden, geben Sie Folgendes ein:

eval "$(ssh-agent -s)"

Wenn Sie sich auf einem Windows-Computer befinden, geben Sie Folgendes ein:

ssh-agent -s
16
Fahim Boron

Lassen Sie mich eine andere Lösung anbieten. Wenn Sie gerade Git 1.8.2.2 oder höher 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

Could not open a connection to your authentication agent

Verwenden Sie in diesem Fall den folgenden Befehl, um festzustellen, ob mehr als ein ssh-agent-Prozess ausgeführt wird

ps aux | grep ssh

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)

kill <PID>

Beispiel:

kill 1074

Nachdem Sie alle ssh-agent-Prozesse entfernt haben, führen Sie die aus px aux | grep ssh Befehl erneut, um sicherzustellen, dass sie verschwunden sind, und starten Sie Bash neu.

Voila, du solltest jetzt so etwas bekommen:

Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:

Jetzt können Sie mit Schritt 5.7 und höher fortfahren.

13
Rick

Hinweis: Dies ist eine Antwort auf diese Frage) , das mit diesem zusammengeführt wurde. Diese Frage betraf Windows 7, was bedeutet, dass meine Antwort Cygwin/MSYS/MSYS2 betraf. Dies scheint für einige Unix, wo ich nicht erwarten würde, dass der SSH-Agent so verwaltet werden muss .

Dadurch wird der SSH-Agent ausgeführt und nur dann authentifiziert , wenn Sie ihn zum ersten Mal benötigen , 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 zu /etc/profile.d/ssh-helper.sh hinzu:

ssh-auth() {
    # Start the SSH agent only if not running
    [[ -z $(ps | grep ssh-agent) ]] && echo $(ssh-agent) > /tmp/ssh-agent-data.sh

    # Identify the running SSH agent
    [[ -z $SSH_AGENT_PID ]] && source /tmp/ssh-agent-data.sh > /dev/null

    # Authenticate (change key path or make a symlink if needed)
    [[ -z $(ssh-add -l | grep "/home/$(whoami)/.ssh/id_rsa") ]] && ssh-add
}

# You can repeat this for other commands using SSH
git() { ssh-auth; command git "[email protected]"; }
12
Renato Silva

Verwenden Sie den Parameter -A, wenn Sie eine Verbindung zum Server herstellen. Beispiel:

ssh -A [email protected]

von der Manpage:

-A Enables forwarding of the authentication agent connection.  
   This can also be specified on a per-Host basis in a configuration file.

   Agent forwarding should be enabled with caution.  Users with the ability to bypass file permissions on the remote Host (for the agent's
   UNIX-domain socket) can access the local agent through the forwarded 
   connection.  An attacker cannot obtain key material from the agent,
   however they can perform operations on the keys that enable them to
   authenticate using the identities loaded into the agent.
8
Lebnik

Die grundlegende Lösung zum Ausführen von ssh-agent wird in vielen Antworten beantwortet. Wenn Sie jedoch ssh-agent mehrmals ausführen (pro geöffnetem Terminal oder per Remote-Anmeldung), werden viele Kopien von ssh-agent im Speicher ausgeführt. Die Skripte, die vorgeschlagen werden, um dieses Problem zu vermeiden, sind lang und müssen getrennte Dateien schreiben und/oder kopieren oder zu viele Zeichenfolgen in ~/.profile oder ~/.schrc schreiben. Lassen Sie mich vorschlagen einfache Zwei-String-Lösung:

Für sh, bash etc:

# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh

Für csh, tcsh usw.:

# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`

Was ist hier:

  • suchen Sie den Prozess ssh-agent nach Name und nach aktuellem Benutzer
  • erstellen Sie die entsprechende Shell-Skriptdatei, indem Sie ssh-agent aufrufen und ssh-agent selbst ausführen, wenn kein aktueller ssh-agent Benutzerprozess gefunden wurde
  • evaluieren Sie das erstellte Shell-Skript, das die entsprechende Umgebung konfiguriert

Es ist nicht erforderlich, das erstellte Shell-Skript ~/.ssh-agent.tcsh oder ~/.ssh-agent.sh vor dem Zugriff anderer Benutzer zu schützen, da: die Kommunikation mit ssh-agent zunächst über einen geschützten Socket erfolgt, auf den andere Benutzer nicht zugreifen können, und Zweitens können andere Benutzer den Socket ssh-agent einfach durch Aufzählungsdateien im Verzeichnis /tmp/ finden. Was den Zugriff auf den ssh-agent -Prozess betrifft, sind es die gleichen Dinge.

7
oklas

Versuche Folgendes:

ssh-agent sh -c 'ssh-add && git Push heroku master'
6
kenorb

Lesen Sie @ cupcakes Antwort für Erklärungen. Hier versuche ich nur, das Update zu automatisieren.

Wenn Sie Cygwin-Terminal mit BASH verwenden, fügen Sie Folgendes zur Datei $ HOME/.bashrc 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)

###########################
# start ssh-agent for
# ssh authentication with github.com
###########################
SSH_AUTH_SOCK_FILE=/tmp/SSH_AUTH_SOCK.sh
if [ ! -e $SSH_AUTH_SOCK_FILE ]; then
    # need to find SSH_AUTH_SOCK again.
    # restarting is an easy option
    pkill ssh-agent
fi
# check if already running
SSH_AGENT_PID=`pgrep ssh-agent`
if [ "x$SSH_AGENT_PID" == "x" ]; then
#   echo "not running. starting"
    eval $(ssh-agent -s) > /dev/null
    rm -f $SSH_AUTH_SOCK_FILE
    echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" > $SSH_AUTH_SOCK_FILE
    ssh-add $HOME/.ssh/github.com_id_rsa 2>&1 > /dev/null
#else
#   echo "already running"
fi
source $SSH_AUTH_SOCK_FILE

VERGESSEN SIE NICHT, Ihre korrekten Schlüssel im Befehl "ssh-add" hinzuzufügen.

5
Kiran Mohan

Ich hatte dieses Problem, als ich ssh-agent startete, als es bereits lief. Wird verwirrt. Verwenden Sie, um festzustellen, ob dies der Fall ist

eval $(ssh-agent)

um zu sehen, ob dies das gleiche ist, was Sie dachten, sollte es sein. In meinem Fall war es anders als das, was ich gerade angefangen habe.

Um zu überprüfen, ob mehr als ein ssh-agent ausgeführt wird, können Sie Folgendes überprüfen:

ps -ef | grep ssh
4
Jahmic

Ich hatte das gleiche Problem bei Ubuntu und die anderen Lösungen haben mir nicht geholfen. Endlich wurde mir klar, was mein Problem war. Ich hatte meine ssh Schlüssel im /root/.ssh Ordner erstellt. Selbst wenn ich ssh-add als root ausgeführt habe, konnte es seine Arbeit nicht erledigen und sagte es immer wieder

Could not open a connection to your authentication agent.

Ich habe meine öffentlichen und privaten ssh-Schlüssel im Ordner /home/myUsername/ erstellt und verwendet

ssh-agent /bin/sh

dann rannte ich

ssh-add /home/myUsername/.ssh/id_rsa

und das problem wurde auf diese weise gelöst.

Hinweis: Für den Zugriff auf Ihr Repository unter git fügen Sie Ihr Git-Passwort hinzu, wenn Sie ssh Schlüssel mit ssh-keygen -t rsa -C "your git email here" erstellen.

4
Merka

Ich hatte ein ähnliches Problem, als ich versuchte, dies unter Windows zum Laufen zu bringen, um über ssh eine Verbindung zu stash herzustellen

Hier ist die Lösung, die für mich funktioniert hat.

  1. 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

  2. Ssh-add funktioniert mit diesem Agententyp nicht über die Befehlszeile

  3. Sie müssen den privaten Schlüssel über das Pageant-UI-Fenster hinzufügen, das Sie erhalten, indem Sie auf das Pageant-Symbol in der Taskleiste doppelklicken (sobald es gestartet ist).

  4. Bevor Sie den Schlüssel zu Pageant hinzufügen, müssen Sie ihn in das PPK-Format konvertieren. Eine vollständige Anleitung finden Sie hier Konvertieren des SSH-Schlüssels in das ppk-Format

  5. Das ist es. Nachdem ich meinen Schlüssel hochgeladen hatte, konnte ich mit SourceTree ein lokales Repo erstellen und die Fernbedienung klonen.

Hoffe das hilft...

4
Moonwalker

Für die in Windows 10 integrierte Bash habe ich Folgendes zu .bash_profile hinzugefügt:

if [ -z $SSH_AUTH_SOCK ]; then
    if [ -r ~/.ssh/env ]; then
            source ~/.ssh/env
            if [ `ps -p $SSH_AGENT_PID | wc -l` = 1 ]; then
                    rm ~/.ssh/env
                    unset SSH_AUTH_SOCK
            fi
    fi
fi

if [ -z $SSH_AUTH_SOCK ]; then
    ssh-agent -s | sed 's/^echo/#echo/'> ~/.ssh/env
    chmod 600 ~/.ssh/env
    source ~/.ssh/env > /dev/null 2>&1
fi
3
Kip

Das hat funktioniert für mich.

Geben Sie im CMD-Fenster den folgenden Befehl ein:

cd path-to-Git/bin # (for example,cd C:\Program Files\Git\bin)
bash
exec ssh-agent bash
ssh-add path/to/.ssh/id_rsa
3
kecco

Ich habe den Fehler behoben, indem ich das Stoppen (Beenden) von Git-Prozessen (SSH-Agent) erzwungen habe, dann Git deinstalliert und dann Git erneut installiert habe.

3
Devendra Singh

Wenn Sie PuTTY verwenden, müssen Sie möglicherweise die Option "Connection/SSH/Auth/Allow Agent Forwarding" auf "true" setzen.

enter image description here

3
Vladius

Unter Verwendung von Git Bash unter Win8.1E war meine Auflösung wie folgt:

eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa
2
SrBlanco

Für PowerShell unter Windows

Ich hatte Probleme mit PoSH und den Befehlen Start-SshAgent/Add-SshKey, daher habe ich ein schnelles Skript erstellt, das einigen Leuten helfen könnte. Dies soll Ihrem PowerShell-Profil hinzugefügt werden, das Sie bearbeiten können, indem Sie notepad $PROFILE ausführen.

if ($(Get-Process ssh-agent) -eq $null)
{
    $ExecutionContext.InvokeCommand.ExpandString($(ssh-agent -c).Replace("setenv", "set"));
}

Es erkennt, ob ssh-agent ausgeführt wird oder nicht und wird nur ausgeführt, wenn noch kein Agent ausgeführt wird. Bitte beachten Sie, dass $ExecutionContext.InvokeCommand.ExpandString ein ziemlich gefährlicher Befehl ist, sodass Sie diese Lösung möglicherweise nicht verwenden möchten, wenn Sie eine nicht vertrauenswürdige Kopie von ssh-agent verwenden.

2

Überprüfen Sie auch Ihre Remote-URL. Verwenden Sie git @ github ... anstelle von https: // proptocol

siehe https://stackoverflow.com/a/33928364/551811

2
BraveNewMath

Für Fensterbenutzer fand ich, dass cmd "eval ssh-agent -s" nicht funktionierte, aber mit git bash funktionierte ein Leckerbissen "eval ssh-agent -s; ssh-add KEY_LOCATION" und stellte sicher, dass der Windows-Dienst "OpenSSH Key" lief Management "wurde nicht deaktiviert

1
aqm

Hier ist die Lösung, die ich bei der Verwendung von PowerShell gefunden habe.

Fügen Sie die folgende Funktion zu Ihrem Microsoft.PowerShell_profile.ps1 hinzu

function RunSsh($userIdentity ) {
   $agent=ssh-agent
   $position=$agent[0].IndexOf("=")
   $ending=$agent[0].IndexOf(";")

   $variableStartPosition=$agent[0].IndexOf("export")
   $variableEndPosition=$agent[0].LastIndexOf(";")
   $variableName=$agent[0].Substring($variableStartPosition+7,$variableEndPosition-$variableStartPosition-7)
   [Environment]::SetEnvironmentVariable($variableName, $agent[0].Substring($position+1,$ending-$position-1))

   $position=$agent[1].IndexOf("=")
   $ending=$agent[1].IndexOf(";")

   $variableStartPosition=$agent[1].IndexOf("export")
   $variableEndPosition=$agent[1].LastIndexOf(";")
   $variableName=$agent[1].Substring($variableStartPosition+7,$variableEndPosition-$variableStartPosition-7)
   [Environment]::SetEnvironmentVariable($variableName, $agent[1].Substring($position+1,$ending-$position-1))

   if($userIdentity.Length -eq 0) {
      ssh-add
   } else {
      ssh-add $userIdentity
   }
}

Jetzt können Sie über die Befehlszeile RunSsh ausführen, das die Identitätsdatei im Ordner ~\.ssh verwendet, oder die Identitätsdatei mit RunSsh C:\ssh\id_rsa übergeben, wobei C:\ssh\id_rsa Ihre Identitätsdatei ist.

Damit dies funktioniert, müssen Sie ssh-add und ssh-agent in Ihrer Umgebungsvariablen path haben.

1
null_pointer

Sogar ich bekam "Konnte keine Verbindung zu Ihrem Authentifizierungsagenten herstellen." beim Ausführen des Befehls beim Generieren und Hinzufügen eines SSH-Schlüssels: ssh-add ~/.ssh/id_rsa. Ich habe das Problem behoben, indem ich die mehreren Instanzen von ssh-agent auf meinem Computer gestoppt und dann das Git über die Systemsteuerung auf meinem Windows-Computer deinstalliert und dann Git erneut installiert habe und die Dinge jetzt funktionierten.

0
Devendra Singh

In meinem Fall hatte meine Comodo-Firewall den ssh-Agenten in einer Sandbox abgelegt. Nachdem ich das Sandboxing deaktiviert hatte, konnte ich das Repository klonen.

Zu Ihrer Information, ich verwende die Comodo-Firewall unter Windows 7.

0
neoramos