Git в Powershell со словами «Не удалось найти ssh-agent» - PullRequest
97 голосов
/ 19 сентября 2011

У меня установлен git, и он прекрасно работает в командной строке, но когда я открываю powershell, он выдает мне следующее предупреждение:

WARNING: Could not find ssh-agent

У меня есть запущенное зрелище, и я загрузил его с закрытым ключом. Это работает во всех инструментах графического интерфейса и командной строке, но не в Powershell.

Что происходит?

Ответы [ 6 ]

137 голосов
/ 16 апреля 2012

Для тех, кто ищет подробное объяснение, прочитайте это сообщение в блоге .Ниже приводится цитата из поста в блоге.В конечном итоге ssh-agent.exe должен быть в пути или решен другим способом.

РЕДАКТИРОВАТЬ: Кажется, что большинство людей не удосужились прочитать связанный блог и оригинальную выдержкуне указал полное решение, поэтому я расширил цитату из блога ниже.

Существует множество способов устранения ошибки, основанных на лайках ко всем остальным ответам.Один из известных работ приведен ниже.Просканируйте другие ответы, которые могут быть более подходящими для вас.

Когда я перезапустил свое приглашение PowerShell, он сказал мне, что не может запустить агент SSH.

Оказывается, это былоне удалось найти исполняемый файл «ssh-agent.exe».Этот файл находится в C: \ Program Files (x86) \ Git \ bin.но эта папка автоматически не добавляется в ваш PATH с помощью msysgit.

Если вы не хотите добавлять этот путь в системный PATH, вы можете обновить скрипт профиля PowerShell, чтобы он применялся только к сеансу PowerShell.,Вот изменение, которое я сделал.

$ env: path + = ";"+ (Get-Item "Env: ProgramFiles (x86)"). Значение + "\ Git \ bin"

На моем компьютере этот скрипт находится по адресу: C: \ Users \ Haacked \ Documents \ WindowsPowerShell \ Microsoft.Powershell_profile.ps1

53 голосов
/ 23 июня 2014

Вы можете добавить две строки в верхней части своего профиля (введите 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"
17 голосов
/ 31 декабря 2012

Если вы используете posh-git и получаете это предупреждение, вы можете отключить его, комментируя (добавляя знак «#») следующую строку

Start-SshAgent -Quiet

В файле

Documents\WindowsPowerShell\Modules\posh-git\profile.example.ps1
17 голосов
/ 19 сентября 2011

Я понял это. Вам необходимо установить переменную окружения GIT_SSH на вашем компьютере, чтобы она указала на plink.exe. Это может быть тот, который установлен с TortoiseHg / TortoiseGit / Git Extensions или вы можете загрузить его со страницы Putty Download Page , но просто убедитесь, что вы используете одну и ту же систему. Лучше всего выйти из сеанса Windows, чтобы убедиться, что эта переменная установлена ​​для всех экземпляров Explorer и командных окон.

3 голосов
/ 18 декабря 2014

Для запуска 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
2 голосов
/ 28 августа 2015

Это было исправлено;см. https://github.com/dahlbyk/posh-git/issues/160

Вы можете обновить Posh-Git .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...