Powershell中的Git说'找不到ssh-agent'

时间:2011-09-19 11:43:51

标签: git ssh

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

WARNING: Could not find ssh-agent

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

发生了什么事?

6 个答案:

答案 0 :(得分:137)

对于那些寻求详细解释的人,请阅读this blog post。以下是博客文章的引用。最终ssh-agent.exe需要在路径中,或以其他方式解决。

修改 似乎大多数人都不打扰阅读链接的博客,原始摘录没有引用完整的解决方案,所以我从下面的博客扩展了引用。

基于对所有其他答案的喜欢,有许多方法可以解决错误。下面引用一个已知的工作方法。扫描其他答案可能更适合您。

  

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

     

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

     

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

     

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

     

在我的机器上,该脚本位于:   C:\用户\ Haacked \文件\ WindowsPowerShell \ Microsoft.Powershell_profile.ps1

答案 1 :(得分:53)

您可以在个人资料的顶部添加两行(键入ise $profile)以解决此PoshGit问题,而不会污染您的路径。然后运行. $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"

答案 2 :(得分:17)

我明白了。您需要在计算机上设置GIT_SSH环境变量以指向plink.exe。这可能是使用TortoiseHg / TortoiseGit / Git Extensions安装的那个,或者您可以从Putty Download Page下载它,但只需确保您使用相同的系统范围。最好从Windows会话中注销,以确保为所有Explorer实例和命令窗口设置此变量。

答案 3 :(得分:17)

如果您正在使用posh-git并收到此警告,您可以通过评论(添加“#”符号)以下行来关闭它

Start-SshAgent -Quiet

在文件

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

答案 4 :(得分:3)

要使用指定的密钥运行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

答案 5 :(得分:2)