Git в Powershell: "Не удалось найти ssh-agent"

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

WARNING: Could not find ssh-agent

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

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

Ответ 1

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

EDIT: Похоже, что большинство людей не утруждают себя чтением связанного блога, а оригинальный экстракт не цитирует полное решение, поэтому я добавил цитату из блога ниже.

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

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

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

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

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

На моей машине, что script находится по адресу: C:\Users\Haacked\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Ответ 2

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

Ответ 3

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

Start-SshAgent -Quiet

В файле

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

Ответ 4

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

Ответ 5

Чтобы запустить 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