Imansible aprire una connessione al tuo agente di autenticazione

Mi sto imbattendo in questo errore di:

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

Ho provato ad aggiungere le chiavi e ho ricevuto questo errore di seguito:

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

Hai avviato ssh-agent ?

Potrebbe essere necessario avviare ssh-agent prima di eseguire il comando ssh-add :

 eval `ssh-agent -s` ssh-add 

Si noti che questo avvierà l’agente per msysgit Bash su Windows . Se si utilizza una shell o un sistema operativo diverso, potrebbe essere necessario utilizzare una variante del comando, come quelli elencati nelle altre risposte .

Vedi le seguenti risposte:

  1. ssh-add complains: Imansible aprire una connessione con l’agente di autenticazione
  2. Git push richiede nome utente e password (contiene istruzioni dettagliate su come utilizzare ssh-agent)
  3. Come eseguire l’agente di autenticazione git / ssh? .
  4. Imansible aprire una connessione al tuo agente di autenticazione

Per avviare automaticamente ssh-agent e consentire a una singola istanza di funzionare in più windows della console, vedere Avvio di ssh-agent all’accesso .

Perché dobbiamo usare eval invece di solo ssh-agent ?

Per scoprire perché, vedi la risposta di Robin Green .

Public vs Private Keys

Inoltre, ogni volta che uso ssh-add , aggiungo sempre le chiavi private. Il file ~/.ssh/id_rsa.pub sembra una chiave pubblica, non sono sicuro che funzionerà. Hai un file ~/.ssh/id_rsa ? Se lo apri in un editor di testo, vuol dire che è una chiave privata?

Ho provato le altre soluzioni inutilmente. Ho fatto ulteriori ricerche e ho scoperto che il seguente comando funzionava. Sto usando Windows 7 e Git Bash .

 eval $(ssh-agent) 

Maggiori informazioni in: https://coderwall.com/p/rdi_wq

Il seguente comando ha funzionato per me. Sto usando CentOS.

 exec ssh-agent bash 

MsysGit o Cygwin

Se stai usando Msysgit o Cygwin puoi trovare un buon tutorial su SSH-Agent in msysgit e cygwin e bash :

  1. Aggiungi un file chiamato .bashrc alla tua cartella home.

  2. Apri il file e incollalo in:

     #!/bin/bash eval `ssh-agent -s` ssh-add 
  3. Ciò presuppone che la tua chiave si trovi nella posizione convenzionale ~/.ssh/id_rsa . In caso contrario, includere un percorso completo dopo il comando ssh-add .

  4. Aggiungi o crea file ~/.ssh/config con i contenuti

     ForwardAgent yes 

    Nel tutorial originale il parametro ForwardAgent è Yes , ma è un errore di battitura. Usa tutto in minuscolo o otterrai errori.

  5. Riavvia Msysgit. Ti chiederà di inserire la tua passphrase una volta, e questo è tutto (fino alla fine della sessione, o il tuo ssh-agent viene ucciso).

Mac / OS X

Se non vuoi avviare un nuovo ssh-agent ogni volta che apri un terminale, controlla Keychain . Ora sono su un Mac, quindi ho usato il tutorial ssh-agent con zsh e portachiavi su Mac OS X per configurarlo, ma sono sicuro che una ricerca su Google avrà molte informazioni per Windows.

Aggiornamento : una soluzione migliore su Mac è quella di aggiungere la chiave al portachiavi di Mac OS:

 ssh-add -K ~/.ssh/id_rsa 

Semplice come quella.

Imansible aprire una connessione al tuo agente di autenticazione

Per risolvere questo errore:

bash:

 $ eval `ssh-agent -s` 

tcsh:

 $ eval `ssh-agent -c` 

Quindi usa ssh-add come faresti normalmente.


Suggerimento giusto:

Ho sempre dimenticato cosa scrivere per i comandi ssh-agent di cui sopra, quindi ho creato un alias nel mio file .bashrc questo modo:

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

Ora invece di usare ssh-agent , posso usare ssh-agent-cyg

Per esempio

 $ 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 

Fonte originale di correzione:

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

Ho affrontato lo stesso problema per Linux, ed ecco cosa ho fatto:

Fondamentalmente, il comando ssh-agent avvia l’agente, ma in realtà non imposta le variabili d’ambiente per l’esecuzione. Invia solo quelle variabili alla shell.

Devi:

 eval `ssh-agent` 

e poi fai ssh-add. Vedi Imansible aprire una connessione al tuo agente di autenticazione .

ssh-add e ssh (supponendo che si stiano usando le implementazioni di openssh) richiedono una variabile d’ambiente per sapere come parlare con l’agente ssh. Se avvii l’agente in una finestra del prompt dei comandi diversa da quella che stai usando ora, o se lo avvii in modo non corretto, né ssh-add né ssh vedranno quella variabile d’ambiente impostata (perché la variabile d’ambiente è impostata localmente sul comando prompt è impostato in).

Non dici quale versione di ssh stai usando, ma se stai usando Cygwin, puoi usare questa ricetta da SSH Agent su Cygwin :

 # 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 

Ciò avvierà automaticamente un agente per ogni nuova finestra del prompt dei comandi che viene aperta (che non è ottimale se apri più prompt di comandi in una sessione, ma almeno dovrebbe funzionare).

Prova ai seguenti passaggi:

1) Apri Git Bash ed esegui: cd ~/.ssh

2) Prova ad eseguire l’agente: eval $(ssh-agent)

3) Al momento, è ansible eseguire il seguente comando: ssh-add -l

In Windows 10 ho provato tutte le risposte elencate qui, ma nessuna sembrava funzionare. In realtà danno un indizio. Per risolvere un problema semplicemente hai bisogno di 3 comandi. L’idea di questo problema è che ssh-add necessita di variabili d’ambiente SSH_AUTH_SOCK e SSH_AGENT_PID da impostare con il percorso del file sock-agent corrente e il numero pid.

 ssh-agent -s > temp.txt 

Ciò salverà l’output di ssh-agent nel file. Il contenuto del file di testo sarà simile a questo:

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

Copia qualcosa come “/tmp/ssh-kjmxRb2764/agent.2764” dal file di testo ed esegui il comando seguente direttamente nella console:

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

Copia qualcosa come “3044” dal file di testo ed esegui il comando seguente direttamente nella console:

 set SSH_AGENT_PID=3044 

Ora, quando le variabili di ambiente (SSH_AUTH_SOCK e SSH_AGENT_PID) sono impostate per la sessione della console corrente, eseguire il comando ssh-add e non fallirà di nuovo per connettere l’agente ssh.

Invece di usare $ ssh-agent -s , ho usato $ eval `ssh-agent -s` per risolvere questo problema.

Ecco cosa ho eseguito passo dopo passo (passaggio 2 in poi su GitBash):

  1. Ho ripulito la mia cartella .ssh in C:\user\\.ssh\
  2. Ha generato una nuova chiave SSH
    $ ssh-keygen -t rsa -b 4096 -C "[email protected]"
  3. Controlla se qualche ID di processo (agente ssh) è già in esecuzione.
    $ ps aux | grep ssh
  4. (Facoltativo) Se ne trovi uno nel passaggio 3, uccidi quelli
    $ kill
  5. Iniziato l’agente ssh
    $ eval `ssh-agent -s`
  6. Aggiunta chiave ssh generata nel passaggio 2 a ssh agent
    $ ssh-add ~/.ssh/id_rsa

Per amplificare la risposta di n3o per Windows 7 …

Il mio problema era infatti che alcune variabili d’ambiente richieste non erano state impostate, e n3o è corretto che ssh-agent ti dice come impostare quelle variabili d’ambiente, ma in realtà non le imposta.

Poiché Windows non ti consente di eseguire “la valutazione”, ecco invece cosa fare:

Reindirizzare l’output di ssh-agent in un file batch con

 ssh-agent > temp.bat 

Ora usa un editor di testo come Blocco note per modificare temp.bat. Per ciascuna delle prime due righe: – Inserisci la parola “set” e uno spazio all’inizio della riga. – Elimina il primo punto e virgola e tutto ciò che segue.

Ora elimina la terza riga. Il tuo temp.bat dovrebbe assomigliare a questo:

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

Esegui temp.bat. Questo imposterà le variabili d’ambiente che sono necessarie affinché ssh-add funzioni.

Una cosa che ho trovato è che eval non ha funzionato con me usando Cygwin, quello che ha funzionato per me era ssh-agent ssh-add id_rsa .

In seguito mi sono imbattuto in un problema che la mia chiave privata era troppo aperta, la soluzione che sono riuscito a trovare per quello (da qui ):

 chgrp Users id_rsa 

così come

 chmod 600 id_rsa 

finalmente sono stato in grado di usare:

 ssh-agent ssh-add id_rsa 

Ho appena ottenuto questo lavoro. Apri il tuo file ~/.ssh/config .

Aggiungi il seguente

 Host github.com IdentityFile ~/.ssh/github_rsa 

La pagina che mi ha dato il suggerimento Impostare SSH per Git ha detto che la singola rientranza spaziale è importante … anche se ho avuto una configurazione qui da Heroku che non aveva quello spazio e funziona correttamente.

Se segui queste istruzioni, il tuo problema verrebbe risolto.

Se sei su un computer Mac o Linux, digita:

 eval "$(ssh-agent -s)" 

Se sei su un computer Windows, digita:

 ssh-agent -s 

Nota: questa è una risposta a questa domanda , che è stata unita a questa. Quella domanda era per Windows 7, il che significa che la mia risposta era per Cygwin / MSYS / MSYS2. Questo sembra per alcuni Unix, dove non mi aspetto che l’agente SSH debba essere gestito in questo modo.

Questo eseguirà l’agente SSH e si autenticherà solo la prima volta che ne hai bisogno , non ogni volta che apri il tuo terminale Bash. Può essere usato per qualsiasi programma che usi SSH in generale, inclusi ssh stesso e scp. Basta aggiungere questo in /etc/profile.d/ssh-helper.sh :

 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]"; } 

Lasciatemi offrire un’altra soluzione. Se hai appena installato Git 1.8.2.2 o giù di lì, e vuoi abilitare SSH, segui le istruzioni ben scritte.

Tutto fino al punto 5.6 dove potresti incontrare un leggero intoppo. Se un agente SSH è già in esecuzione, al riavvio di bash potrebbe essere visualizzato il seguente messaggio di errore

 Could not open a connection to your authentication agent 

Se lo fai, usa il seguente comando per vedere se è in esecuzione più di un processo ssh-agent

 ps aux | grep ssh 

Se vedi più di un servizio ssh-agent, dovrai uccidere tutti questi processi. Usa il comando kill come segue (il PID sarà unico sul tuo computer)

 kill  

Esempio:

 kill 1074 

Dopo aver rimosso tutti i processi ssh-agent, esegui il px aux | comando grep ssh di nuovo per essere sicuri che siano spariti, quindi riavviare Bash.

Voilà, dovresti ora ottenere qualcosa del genere:

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

Ora puoi continuare dal punto 5.7 e oltre.

Utilizza il parametro -A quando ti colleghi al server, ad esempio:

 ssh -A [email protected] 

dalla pagina man:

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

La soluzione di base per eseguire ssh-agent una risposta in molte risposte. Tuttavia, eseguendo ssh-agent molte volte (per ogni terminale aperto o per accesso remoto) si creeranno molte copie di ssh-agent esecuzione in memoria. Gli script suggeriti per evitare questo problema sono lunghi e devono scrivere e / o copiare file separati o scrivere troppe stringhe in ~/.profile o ~/.schrc . Consentitemi di suggerire una semplice soluzione a due stringhe:

Per sh , bash , ecc:

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

Per csh , tcsh , ecc:

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

Cosa c’è qui:

  • cercare il processo ssh-agent base al nome e all’utente corrente
  • creare un file script di shell appropriato chiamando ssh-agent ed eseguendo ssh-agent stesso se non viene trovato alcun processo ssh-agent dell’utente corrente
  • valutare lo script di shell creato che configura l’ambiente appropriato

Non è necessario proteggere lo script di shell creato ~/.ssh-agent.tcsh o ~/.ssh-agent.sh da un altro utente perché: la prima comunicazione con ssh-agent viene elaborata tramite socket protetto che non è accessibile a un altro utente e al secondo un altro utente può trovare il socket ssh-agent semplice con i file di enumerazione nella /tmp/ . Per quanto riguarda l’accesso al processo ssh-agent , sono le stesse cose.

Prova quanto segue:

 ssh-agent sh -c 'ssh-add && git push heroku master' 

Ho avuto questo problema, quando ho avviato ssh-agent, quando era già in esecuzione. Diventa confuso. Per vedere se questo è il caso, utilizzare

 eval $(ssh-agent) 

per vedere se questo è uguale a quello che pensavate dovrebbe essere. Nel mio caso, era diverso da quello che ho appena iniziato.

Per verificare ulteriormente se hai più di un agente ssh in esecuzione, puoi controllare:

 ps -ef | grep ssh 

Ho avuto un problema simile quando stavo cercando di farlo funzionare su Windows per connettermi allo stash via ssh

Ecco la soluzione che ha funzionato per me.

  1. Risulta che stavo eseguendo Pageant ssh agente sulla mia casella di Windows – vorrei verificare quello che stai correndo. Sospetto che sia Pageant dato che viene fornito come predefinito con Putty e winScp

  2. Ssh-add non funziona dalla riga di comando con questo tipo di agente

  3. È necessario aggiungere la chiave privata tramite la finestra dell’interfaccia utente che è ansible ottenere aggiungendo l’icona Pageant nella barra delle applicazioni (una volta avviata).

  4. Prima di aggiungere la chiave a Pageant è necessario convertirlo in formato PPK. Le istruzioni complete sono disponibili qui Come convertire la chiave SSH in formato ppk

  5. È così. Una volta che ho caricato la mia chiave per lo stash, ero in grado di usare SourceTree per creare un repo locale e clonare il telecomando.

Spero che questo ti aiuti…

Leggi la risposta @ cupcake per le spiegazioni. Qui cerco solo di automatizzare la correzione.

Se si utilizza il terminale Cygwin con BASH, aggiungere quanto segue al file $ HOME / .bashrc. Questo avvia solo ssh-agent una volta nel primo terminale Bash e aggiunge le chiavi a ssh-agent. (Non sono sicuro se è necessario su Linux)

 ########################### # 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 

NON DIMENTICARE di aggiungere le chiavi corrette nel comando “ssh-add”.

Ho risolto l’errore fermando forzatamente (ucciso) i processi git (agente ssh), quindi disinstallando Git e quindi reinstallando Git.

Se stai usando Putty, forse devi impostare l’opzione “Connection / SSH / Auth / Allow forwarding agent” su “true”.

inserisci la descrizione dell'immagine qui

Questo ha funzionato per me.

Nella finestra CMD, digitare il seguente comando:

 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 

Usando Git Bash su Win8.1E, la mia risoluzione era la seguente:

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

Per bash integrato in Windows 10, l’ho aggiunto a .bash_profile:

 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 

Nel mio caso, il mio firewall Comodo aveva installato in modalità sandbox l’agente ssh. Una volta disabilitato il sandboxing, sono riuscito a clonare il repository.

A proposito, sto usando il firewall Comodo su Windows 7.

Anche io stavo diventando “Imansible aprire una connessione al tuo agente di autenticazione”. durante l’esecuzione del comando durante la generazione e l’aggiunta della chiave SSH: ssh-add ~/.ssh/id_rsa . Ho risolto il problema arrestando le istanze multiple di ssh-agent esecuzione sul mio computer e quindi disinstallato Git dal pannello di controllo sul mio computer Windows e poi di nuovo installato Git e ora le cose stavano funzionando.

Controlla anche l’URL remoto. usa git @ github … invece di https: // proptocol

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