Git在PowerShell中说'找不到ssh-agent'

我已经安装了git,它在命令提示符下工作得很好,但是当我打开powershell时,它给了我这个警告:

WARNING: Could not find ssh-agent 

我有选美运行和加载我的私钥。 这适用于所有的gui工具和命令提示符,但不适用于Powershell。

这是怎么回事?

对于那些寻找一个详细的解释有这个博客文章的阅读。 以下是博客文章的引用。 最终, ssh-agent.exe需要在path中,或者以其他方式解决。

编辑:看来大多数人不打扰阅读链接的博客和原始提取没有引用完整的解决scheme,所以我已经扩大了从下面的博客引用。

有许多方法来解决这个错误,根据喜欢到其他所有的答案。 下面引用一个已知的工作。 扫描其他答案,他们可能会更适合你。

当我重新启动PowerShell提示符时,它告诉我无法启动SSH代理。

事实certificate,它无法find“ssh-agent.exe”可执行文件。 该文件位于C:\ Program Files(x86)\ Git \ bin中。 但该文件夹不会自动添加到您的PATH通过msysgit。

如果您不想将此path添加到系统PATH,则可以更新PowerShellconfiguration文件脚本,使其仅适用于PowerShell会话。 这是我做的改变。

$ env:path + =“;” +(Get-Item“Env:ProgramFiles(x86)”)。Value +“\ Git \ bin”

在我的机器上,该脚本位于:C:\ Users \ Haacked \ Documents \ WindowsPowerShell \ Microsoft.Powershell_profile.ps1

你可以添加两行到你的个人资料的顶部(键入ise $profile )来解决这个问题,而不会污染你的path。 然后运行. $profile . $profile重新加载您的个人资料。

对于32位的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位的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" 

如果你正在使用posh-git并得到这个警告,你可以通过注释(添加一个'#'符号)来closures下面的行

 Start-SshAgent -Quiet 

在文件中

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

我想到了。 你需要在你的机器上设置GIT_SSH环境variables来指向plink.exe 。 这可能是与TortoiseHg / TortoiseGit / Git扩展安装的一个,或者您可以从腻子下载页面下载 ,但只要确保您使用相同的系统范围。 最好从Windows会话注销,以确保为所有资源pipe理器实例和命令窗口设置此variables。

用指定的密钥运行ssh-agent我写了这段代码:

 $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 

这已经修复了; 请参阅https://github.com/dahlbyk/posh-git/issues/160

你可以更新posh-git 。