我安装了git,它在命令提示符下工作得很好,但是当我打开powershell时它给了我这个警告:
WARNING: Could not find ssh-agent
我正在运行选美并加载我的私钥。这适用于所有gui工具和命令提示符,但不适用于Powershell。
发生了什么事?
答案 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
重新加载您的个人资料。
Set-Alias ssh-agent "${env:ProgramFiles(x86)}\git\bin\ssh-agent.exe"
Set-Alias ssh-add "${env:ProgramFiles(x86)}\git\bin\ssh-add.exe"
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)