it-swarm.cn

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

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

WARNING: Could not find ssh-agent

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

这是怎么回事?

97
Khalid Abuhakmeh

对于那些寻找详细解释的人,请阅读 此博客文章 。以下是博客文章的引用。最终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)”)。Value +“\ Git\bin”

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

137
Taras Alenin

您可以在个人资料的顶部添加两行(键入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"
53
brianary

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

17
Khalid Abuhakmeh

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

Start-SshAgent -Quiet

在文件中

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

要使用指定的密钥运行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
3
Stanislav Berkov
2
TrueWill