Git in Powershell che dice "Impossibile trovare ssh-agent"


97

Ho installato git e funziona alla grande nel prompt dei comandi, ma quando apro PowerShell mi dà questo avviso:

WARNING: Could not find ssh-agent

Ho un concorso in esecuzione e ho caricato la mia chiave privata. Funziona in tutti gli strumenti della GUI e nel prompt dei comandi ma non in Powershell.

Cosa sta succedendo?


1
Potrebbe %PATH%essere diverso per qualche motivo?
Jonas Heidelberg


1
Il link di @ rohancragg dice essenzialmente aggiungi: $env:path += ";" + (Get-Item "Env:ProgramFiles(x86)").Value + "\Git\bin"all'inizio del tuo file PROFILO (usa il comando PS ise $PROFILEper aprire il PROFILO per la modifica)
Toby

scusa per non aver spiegato - haacked dice: "non è stato possibile trovare l'eseguibile" ssh-agent.exe ". Quel file si trova in C: \ Program Files (x86) \ Git \ bin. ma quella cartella non è automaticamente aggiunto al tuo PERCORSO da msysgit "
rohancragg

Suggerirei che questa risposta è ora preferibile al consiglio nel post infestato:
rohancragg

Risposte:


137

Per chi cerca una spiegazione dettagliata legga questo post del blog . Di seguito una citazione dal post del blog. Alla fine le ssh-agent.exeesigenze devono essere nel percorso o risolte in qualche altro modo.

EDIT: Sembra che la maggior parte delle persone non si preoccupi di leggere il blog collegato e l'estratto originale non ha citato la soluzione completa, quindi ho ampliato la citazione dal blog qui sotto.

Esistono numerosi modi per risolvere l'errore, in base ai Mi piace a tutte le altre risposte. Uno noto per funzionare è citato di seguito. Scansione anche se altre risposte potrebbero essere più appropriate per te.

Quando ho riavviato il mio prompt di PowerShell, mi ha detto che non poteva avviare l'agente SSH.

Si scopre che non è stato possibile trovare l'eseguibile "ssh-agent.exe". Quel file si trova in C: \ Programmi (x86) \ Git \ bin. ma quella cartella non viene aggiunta automaticamente al tuo PATH da msysgit.

Se non desideri aggiungere questo percorso al PERCORSO di sistema, puoi aggiornare lo script del profilo di PowerShell in modo che si applichi solo alla sessione di PowerShell. Ecco il cambiamento che ho fatto.

$ env: percorso + = ";" + (Get-Item "Env: ProgramFiles (x86)"). Value + "\ Git \ bin"

Sulla mia macchina quello script si trova in: C: \ Users \ Haacked \ Documents \ WindowsPowerShell \ Microsoft.Powershell_profile.ps1


2
Questa dovrebbe essere davvero la risposta!
caveman_dick

Questa è la risposta esatta. La risposta accettata presume che TortoiseGit o TortoiseHg sia installato. Come sottolinea questa risposta, tutto ciò di cui hai bisogno per risolvere il problema è Msysgit.
Carl

3
Ugggh l'aggiunta di questa directory a PATH mi ha messo a disagio .. ha tutti i tipi di .ex con nomi generici in conflitto con i comandi di Windows. Spero che un giorno non mi morda il culo.
Salman von Abbas

4
@SalmanPK: non solo mi mette a disagio, ma è anche esplicitamente scoraggiato dai manutentori di Git. E nel mio caso, ha rotto la riga di comando di PowerShell.
skolima

10
Per me, si ssh-agent.exetrovava effettivamente nella \Git\usr\bincartella.
Ben Wilde

53

Puoi aggiungere due linee nella parte superiore del tuo profilo (tipo ise $profile) per risolvere questo problema di PoshGit senza inquinare il tuo percorso. Quindi corri . $profilea ricaricare il tuo profilo.

Per git a 32 bit

Set-Alias ssh-agent "${env:ProgramFiles(x86)}\git\bin\ssh-agent.exe"
Set-Alias ssh-add "${env:ProgramFiles(x86)}\git\bin\ssh-add.exe"

Per git a 64 bit

Set-Alias ssh-agent "$env:ProgramFiles\git\usr\bin\ssh-agent.exe"
Set-Alias ssh-add "$env:ProgramFiles\git\usr\bin\ssh-add.exe"

3
non dimenticare di correre . $profilea ricaricare il tuo profilo
northben

2
L'utilizzo di New-Alias ​​ha causato problemi quando ho provato a eseguire. $ profile più volte (per altre modifiche). Usa invece Set-Alias, e ha funzionato molto meglio.
Randall Borck

1
Grazie @RandallBorck e @northben! Suggerimenti incorporati.
Brianary

3
Con l'avvento del git 2.5 a 64 bit (rilasciato ieri), questi alias dovranno essere aggiornati per puntare ${env:ProgramFiles}\git\usr\bin\invece a sistemi a 64 bit.
Chester Husk

Questa dovrebbe essere la risposta accettata. Nessuno vuole rovinare il proprio percorso.
jebar8

17

Se stai usando posh-git e ricevi questo avviso, puoi disattivarlo commentando (aggiungendo un segno "#") la riga seguente

Start-SshAgent -Quiet

Nel file

Documents\WindowsPowerShell\Modules\posh-git\profile.example.ps1

5
Come bonus aggiuntivo, se non hai bisogno / vuoi il supporto SSH e stai avendo un lancio powershell molto lento anche con l'aggiunta della correzione PATH ssh-agent.exe, commentare questa riga accelera il lancio di una tonnellata.
MechEthan

17

L'avevo capito. È necessario impostare GIT_SSHla variabile di ambiente sulla macchina in modo che punti plink.exe. Questo potrebbe essere quello installato con le estensioni TortoiseHg / TortoiseGit / Git oppure puoi scaricarlo dalla pagina di download di Putty , ma assicurati di utilizzare lo stesso sistema. È meglio disconnettersi dalla sessione di Windows per assicurarsi che questa variabile venga impostata per tutte le istanze di Explorer e le finestre di comando.


Dopo 45 minuti sprecati, questa è l'unica cosa che ha risolto i miei problemi con Git in Powershell che non utilizzava Pageant come agente SSH . Ho semplicemente creato una variabile d'ambiente utente per GIT_SSHcon un valore di C:\Program Files (x86)\PuTTY\plink.exe. Grazie.
Phil Ricketts,

3

Per eseguire ssh-agent con la chiave specificata ho scritto questo codice:

$gitexepath = cmd /c where git
$gitbindir = Join-Path $gitexepath "..\..\bin"
$sshagentpath = Join-Path $gitbindir "ssh-agent.exe"
$sshaddpath = Join-Path $gitbindir "ssh-add.exe"
$keypath = "...key path...":
$sshagentres = cmd /c $sshagentpath 
$env:SSH_AUTH_SOCK = [System.Text.RegularExpressions.Regex]::Match($sshagentres, "(?<=SSH_AUTH_SOCK=).+?(?=;)").Value
$env:SSH_AGENT_PID = [System.Text.RegularExpressions.Regex]::Match($sshagentres, "(?<=SSH_AGENT_PID=).+?(?=;)").Value
cmd /c $sshaddpath $keypath

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.