Powershell'de "ssh-agent bulunamadı" diyen Git


97

Git yükledim ve komut isteminde harika çalışıyor, ancak powershell'i açtığımda bana şu uyarıyı veriyor:

WARNING: Could not find ssh-agent

Özel anahtarımla dolu bir yarışmacı var. Bu, tüm gui araçlarında ve komut isteminde çalışır ancak Powershell'de çalışmaz.

Neler oluyor?


1
Could %PATH%nedense farklı olacak?
Jonas Heidelberg


1
@ rohancragg'ın bağlantısı esasen şunu söylüyor: $env:path += ";" + (Get-Item "Env:ProgramFiles(x86)").Value + "\Git\bin"PROFİL dosyanızın üstüne ekleyin (PROFİL'i ise $PROFILEdüzenlemek için açmak için PS komutunu kullanın)
Toby

açıklamadığım için üzgünüm - haacked şöyle diyor: "" ssh-agent.exe "yürütülebilir dosyasını bulamadı. Bu dosya C: \ Program Files (x86) \ Git \ bin konumunda bulunuyor. ancak bu klasör otomatik olarak değil msysgit tarafından PATH'inize eklendi "
rohancragg

Ben öneririm bu cevap : angelside yayında tavsiye şimdi tercih edilir
rohancragg

Yanıtlar:


137

Ayrıntılı bir açıklama arayanlar için bu blog gönderisini okuyun . Aşağıda blog gönderisinden bir alıntı var. Nihayetinde ssh-agent.exeihtiyaçların yolda olması veya başka bir şekilde çözülmesi gerekir.

DÜZENLEME: Görünüşe göre çoğu insan bağlantılı blogu okumaktan rahatsız olmuyor ve orijinal alıntı tam çözümden alıntı yapmadı, bu yüzden aşağıdaki blogdan alıntıyı genişlettim.

Diğer tüm yanıtların beğenilerine göre hatayı çözmenin birçok yolu vardır. Çalıştığı bilinen biri aşağıda alıntılanmıştır. Sizin için daha uygun olabilecek diğer cevapları da tarayın.

PowerShell istemimi yeniden başlattığımda, SSH Aracısını başlatamadığını söyledi.

“Ssh-agent.exe” yürütülebilir dosyasını bulamadığı ortaya çıktı. Bu dosya C: \ Program Files (x86) \ Git \ bin konumunda bulunur. ancak bu klasör, msysgit tarafından PATH'nize otomatik olarak eklenmez.

Bu yolu sistem PATH'inize eklemek istemiyorsanız, PowerShell profil komut dosyanızı yalnızca PowerShell oturumunuz için geçerli olacak şekilde güncelleyebilirsiniz. İşte yaptığım değişiklik.

$ env: yol + = ";" + (Get-Item "Env: ProgramFiles (x86)"). Değer + "\ Git \ bin"

Makinemde bu komut dosyası şu konumdadır: C: \ Users \ Haacked \ Documents \ WindowsPowerShell \ Microsoft.Powershell_profile.ps1


2
Bu gerçekten cevap olmalı!
caveman_dick

Bu doğru cevap. Kabul edilen cevap, TortoiseGit veya TortoiseHg'nin kurulu olduğunu varsayar. Bu yanıtın da işaret ettiği gibi, sorunu çözmek için ihtiyacınız olan tek şey Msysgit'dir.
Carl

3
Ugggh bu dizini PATH'e eklemek beni rahatsız etti .. Windows komutlarıyla çakışan jenerik isimlerle her türlü .exes var. Umarım bir gün beni kıçımdan ısırmaz.
Salman von Abbas

4
@SalmanPK: Bu sadece beni rahatsız etmekle kalmıyor, aynı zamanda Git bakımcıları tarafından açıkça cesareti kırılıyor. Ve benim durumumda, PowerShell komut satırını kırdı.
skolima

10
Benim ssh-agent.exeiçin aslında \Git\usr\binklasörde bulunuyordu.
Ben Wilde

53

ise $profileYolunuzu kirletmeden bu PoshGit sorununu düzeltmek için profilinizin üstüne iki satır ekleyebilirsiniz (tip ). O zaman koş. $profile profilinizi yeniden yüklemek için .

32 bit için git

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

64 bit için git

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
. $profileprofilinizi yeniden yüklemek için koşmayı unutmayın
northben

2
Yeni-Takma Ad kullanmak, koşmayı denediğimde sorunlara neden oldu. $ profile birden çok kez (diğer değişiklikler için). Bunun yerine Set-Alias ​​kullanın ve bu çok daha iyi sonuç verdi.
Randall Borck

1
@RandallBorck ve @northben'e teşekkürler! Öneriler dahil edildi.
brianary

3
64-bit git 2.5'in (dün piyasaya sürülmüştür) gelişiyle, bu takma adların ${env:ProgramFiles}\git\usr\bin\64-bit sistemler yerine işaret edecek şekilde güncellenmesi gerekecektir .
Chester Kabuk

Kabul edilen cevap bu olmalıdır. Kimse yolunu alt üst etmek istemez.
jebar8

17

Eğer posh-git kullanıyorsanız ve bu uyarıyı alıyorsanız, aşağıdaki satırı yorumlayarak ('#' işareti ekleyerek) kapatabilirsiniz.

Start-SshAgent -Quiet

Dosyanın içinde

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

5
Ek bir bonus olarak, SSH desteğine ihtiyacınız yoksa / istemiyorsanız ve ssh-agent.exe PATH düzeltmesini ekleseniz bile gerçekten yavaş bir powershell başlatıyorsanız, bu satırın yorumlanması lansmanı bir ton hızlandırır.
MechEthan

17

Bunu anladım. GIT_SSHMakinenizde işaret etmesi için ortam değişkenini ayarlamanız gerekir plink.exe. Bu, TortoiseHg / TortoiseGit / Git Extensions ile yüklenen olabilir veya Putty İndirme Sayfasından indirebilirsiniz , ancak aynı sistem genelinde kullandığınızdan emin olun. Bu değişkenin tüm Explorer örnekleri ve komut pencereleri için ayarlandığından emin olmak için Windows oturumunuzdan çıkış yapmak en iyisidir.


Boşa geçen 45 dakikanın ardından , Powershell'de Git ile ilgili sorunlarımı SSH ajanı olarak Pageant kullanmama sorunu çözen tek şey bu oldu . İçin GIT_SSHdeğerine sahip bir Kullanıcı Ortamı Değişkeni oluşturdum C:\Program Files (x86)\PuTTY\plink.exe. Teşekkürler.
Phil Ricketts

3

Ssh-agent'ı belirtilen anahtarla çalıştırmak için şu kodu yazdım:

$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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.