Git dans Powershell en disant ‘Impossible de trouver ssh-agent’

J’ai installé git et cela fonctionne très bien dans l’invite de commande, mais quand j’ouvre PowerShell, il me donne cet avertissement:

WARNING: Could not find ssh-agent 

J’ai un spectacle en cours d’exécution et chargé avec ma clé privée. Cela fonctionne dans tous les outils d’interface graphique et l’invite de commande, mais pas dans Powershell.

Que se passe-t-il?

Pour ceux qui recherchent une explication détaillée, lisez ce billet de blog . Ci-dessous, une citation du billet de blog. En fin de compte, le ssh-agent.exe doit être sur le chemin ou résolu d’une autre manière.

EDIT: Il semble que la plupart des gens ne prennent pas la peine de lire le blog lié et que l’extrait original n’a pas cité la solution complète. J’ai donc développé la citation du blog ci-dessous.

Il existe de nombreuses manières de résoudre l’erreur, en fonction des préférences de toutes les autres réponses. Un connu pour travailler est cité ci-dessous. Scannez si d’autres réponses vous conviennent mieux.

Lorsque j’ai redémarré mon invite PowerShell, il m’a dit qu’il ne pouvait pas démarrer l’agent SSH.

Il s’est avéré impossible de trouver le fichier exécutable «ssh-agent.exe». Ce fichier se trouve dans C: \ Program Files (x86) \ Git \ bin. mais ce dossier n’est pas automatiquement ajouté à votre PATH par msysgit.

Si vous ne souhaitez pas append ce chemin d’access à votre système PATH, vous pouvez mettre à jour votre script de profil PowerShell pour qu’il ne s’applique qu’à votre session PowerShell. Voici le changement que j’ai fait.

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

Sur ma machine, ce script est à: C: \ Users \ Haacked \ Documents \ WindowsPowerShell \ Microsoft.Powershell_profile.ps1

Vous pouvez append deux lignes en haut de votre profil (type ise $profile ) pour résoudre ce problème PoshGit sans polluer votre Path. Alors cours . $profile . $profile pour recharger votre profil.

Pour git 32 bits

 Set-Alias ssh-agent "${env:ProgramFiles(x86)}\git\bin\ssh-agent.exe" Set-Alias ssh-add "${env:ProgramFiles(x86)}\git\bin\ssh-add.exe" 

Pour git 64 bits

 Set-Alias ssh-agent "$env:ProgramFiles\git\usr\bin\ssh-agent.exe" Set-Alias ssh-add "$env:ProgramFiles\git\usr\bin\ssh-add.exe" 

Si vous utilisez posh-git et que vous recevez cet avertissement, vous pouvez le désactiver en commentant (en ajoutant un signe “#” à la ligne suivante)

 Start-SshAgent -Quiet 

Dans le fichier

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

Je l’ai compris. Vous devez définir la variable d’environnement GIT_SSH sur votre machine pour qu’elle pointe vers plink.exe . Cela pourrait être celui installé avec TortoiseHg / TortoiseGit / Git Extensions ou vous pouvez le télécharger à partir de Putty Download Page , mais assurez-vous juste que vous utilisez le même système à l’échelle. Il est préférable de vous déconnecter de votre session Windows pour vous assurer que cette variable est définie pour toutes les instances et fenêtres de commande de l’Explorateur.

Pour exécuter ssh-agent avec la clé spécifiée, j’ai écrit ce code:

 $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 

Ceci a été corrigé voir https://github.com/dahlbyk/posh-git/issues/160

Vous pouvez mettre à jour posh-git .